Cassandra'nın sıkıştırma stratejisini değiştirme

Apigee; proxy'ler, önbellekler ve jetonlar için veriler de dahil olmak üzere verilerinin çoğunu depolamak için Cassandra veritabanını kullanır. Sıkıştırma, veritabanlarında depolanan verilerin boyutunu küçültmek için kritik bir süreçtir ve veritabanı işlemlerinin verimli bir şekilde sürdürülmesi için gereklidir. Cassandra, sıkıştırma için çeşitli stratejileri destekler. Apigee, tüm Edge for Private Cloud müşterilerinin Cassandra kümelerini tüm tablolar için varsayılan SizeTieredCompactionStrategy yerine LeveledCompactionStrategy ile çalıştırmasını önerir. LeveledCompactionStrategy, SizeTieredCompactionStrategy ile karşılaştırıldığında daha iyi performans, gelişmiş disk kullanımı ve daha verimli sıkıştırma sunar ve daha az boş alan gerektirir.

Edge for Private Cloud 4.52.02 veya sonraki sürümlerin tüm yeni yüklemelerinde Cassandra, LeveledCompactionStrategy ile otomatik olarak yapılandırılır. Ancak Private Cloud için Edge'i önceki bir sürümden 4.54.00 sürümüne yükselttiyseniz kurulumunuzda Cassandra, SizeTieredCompactionStrategy ile kullanılmaya devam edebilir.

Sıkıştırma stratejisinin LeveledCompactionStrategy dışında bir değere değiştirilmesi önerilmese de bu belgede, gerekirse değişikliğin nasıl yapılacağı açıklanmakta ve mevcut sıkıştırma stratejinizi kontrol etme talimatları verilmektedir. Sıkıştırma stratejisini önerilmeyen bir seçenekle değiştirirseniz gelecekteki Cassandra yazılım yükseltmeleri değişikliklerinizin üzerine yazabilir. Standart olmayan bir yaklaşım kullanıyorsanız her yükseltmeden sonra sıkıştırma stratejinizi doğrulamanızı öneririz.

Hazırlık

Ön koşullar

Edge for Private Cloud 4.54.00'te Cassandra 5.x için JDK 17 (Java 17) gerekir. Bir Cassandra düğümünde nodetool veya cqlsh komutlarını çalıştırmadan önce Java 17'nin varsayılan Java sürümü olarak yapılandırıldığından emin olun (örneğin, sudo alternatives --set java JAVA_17_PATH/bin/java komutunu çalıştırarak veya JAVA_HOME değerini JDK 17 kurulumunuza ayarlayarak).

Mevcut sıkıştırma stratejisini kontrol etme

Ek 1'deki talimatları uygulayarak tablolardaki mevcut sıkıştırma stratejisini kontrol edebilirsiniz. Sıkıştırma stratejisi zaten LeveledCompactionStrategy ise bunun nedeni, Edge for Private Cloud 4.51 veya sonraki bir sürümün yüklenmesiyle başlamış olmanız ya da daha önce Apigee tarafından önerildiği şekilde LeveledCompactionStrategy olarak değiştirilmiş olması olabilir. LeveledCompactionStrategy kullanıyorsanız Apigee, bu stratejiyle devam etmenizi ve değişiklik yapmamanızı önerir. Ancak Private Cloud için Edge sizin tarafınızdan çalıştırıldığından, aşağıdaki talimatlarda sıkıştırma stratejisinin nasıl değiştirileceği açıklanmaktadır.

Yedekleme

Sıkıştırma stratejisinin değiştirilmesi Cassandra düğümlerinde tam sıkıştırma döngüsünü tetiklediğinden, sıkıştırmaların yükü ve eşzamanlı uygulama trafiği nedeniyle bazı gecikmeler oluşabilir. Bu değişikliği geri almak için yedekten geri yükleme yapmanız gerekmez. Sıkıştırma stratejisini doğrudan 1. Seçenek: Değişikliği geri alma bölümünde açıklandığı şekilde geri alabilirsiniz. Ancak önlem olarak, sıkıştırma stratejisini değiştirmeden önce verilerinizi yedeklemek için Yedekleme bölümüne bakın.

Sıkıştırma işleme hızı

Sıkıştırma stratejisi LeveledCompactionStrategy olarak değiştirildikten sonra sıkıştırmalar uzun süre çalışabilir. Veri sıkıştırmanın boyutuna bağlı olarak çalışma zamanı değişebilir. Sıkıştırma döngüsü sırasında Cassandra daha fazla sistem kaynağı kullanabilir. Sıkıştırma işleminin çok fazla sistem kaynağı kullanmamasını sağlamak için sıkıştırma işleme hızı sınırları belirlemenizi öneririz. Aksi takdirde, bu durum API çalışma zamanı isteklerini kesintiye uğratabilir.

Tüm Cassandra düğümlerinde sıkıştırma işleme hızını maksimum 128 MB'a ayarlamak için düğümlerin her birinde aşağıdaki nodetool komutunu çalıştırın:

nodetool setcompactionthroughput 128

Sıkıştırma işlemleri için sanal makineleri boyutlandırma

Bu değişikliği uygulamadan önce Cassandra düğümlerinin yeterli CPU ve bellek kaynağına sahip olduğundan ve en fazla% 25 CPU yüküyle çalıştığından emin olun.

Sıkıştırma stratejisi değişikliğinden sonra tam bir sıkıştırma döngüsünün çalıştırılması beklenir. Bu nedenle, sıkıştırma stratejisinin trafiğin düşük olduğu dönemlerde değiştirilmesi önerilir.

Aşamalı çalıştırmalar

Özellikle büyük Cassandra kümeleri kullanıyorsanız tüm düğümlerdeki değişikliği bir günde tamamlayamayabilirsiniz. Bunun nedeni, dizinlerin her düğümde tek tek yeniden oluşturulması gerekmesidir. Bir şemanın veya tablonun sıkıştırma stratejisini tek seferde değiştirebilirsiniz. Bunun için tabloyu değiştirerek sıkıştırma stratejisini değiştirin ve ardından tablodaki tüm dizinleri (varsa) tüm düğümlerde yeniden oluşturun. Ardından, her tablo veya anahtar alanı için yukarıdaki prosedürü tekrarlayın. Bir tablo veya bir anahtar alanı için bu tür çalıştırmalar, farklı günlerde çalıştırılacak şekilde bölünebilir.

Örneğin, kms şemasındaki oauth_20_access_tokens tablosunun sıkıştırma stratejisini LeveledCompactionStrategy olarak değiştirmek için aşağıdakileri yapabilirsiniz:

  1. Aşağıdaki CQL'yi çalıştırarak sıkıştırma stratejisini değiştirmek için tabloyu değiştirin:

    ALTER TABLE kms.oauth_20_access_tokens WITH compaction = {'class' : 'LeveledCompactionStrategy'};
  2. Yalnızca bu tablonun tüm dizinlerini yeniden oluştur:

    nodetool rebuild_index kms oauth_20_access_tokens oauth_20_access_tokens_app_id_idx
    nodetool rebuild_index kms oauth_20_access_tokens oauth_20_access_tokens_client_id_idx
    nodetool rebuild_index kms oauth_20_access_tokens oauth_20_access_tokens_refresh_token_idx   
        

Sıkıştırma stratejisini değiştirme

Özet olarak, sıkıştırma stratejisini değiştirmek iki adımlı bir süreçtir:

  1. Her tablonun sıkıştırma stratejisini değiştirin.
  2. Her düğümdeki tüm dizinleri tek tek yeniden oluşturun.

Sıkıştırma stratejisini değiştirmek için her tabloda tek tek bir ALTER TABLE komutu yürütmeniz gerekir. Örnek bir ALTER TABLE komutu aşağıdaki gibi görünür:

# To change to LeveledCompactionStrategy
ALTER TABLE kms.oauth_20_access_tokens WITH compaction = {'class' : 'LeveledCompactionStrategy'};
  
# To change to SizeTieredCompactionStrategy
ALTER TABLE kms.oauth_20_access_tokens WITH compaction = {'class' : 'SizeTieredCompactionStrategy'};

Yeni sıkıştırma stratejisi ayarlamak için tabloyu değiştirme

Her seferinde bir anahtar alanının stratejisini değiştirmek için herhangi bir Cassandra düğümünde aşağıdaki CQL'leri çalıştırın. CQL'ler CQL isteminde çalıştırılabilir. CQL istemini çağırma talimatları:

/opt/apigee/apigee-cassandra/bin/cqlsh `hostname -i`

XXXXXXXX:9042 adresinde Apigee'ye bağlandı.

[cqlsh 6.2.0 | Cassandra 5.0.8 | CQL spec 3.4.7 | Native protocol v5]
Use HELP for help.
cqlsh>

Aşağıdaki komutlar, sıkıştırma stratejisinin LeveledCompactionStrategy olarak değiştirilmesini kapsar ancak diğer sıkıştırma stratejilerine geçmek için benzer komutlar kullanılabilir.

Aşağıdaki 14 ila 16. adımlar yalnızca para kazanma özelliğini kullanıyorsanız geçerlidir.

  1. Anahtar alanı için sıkıştırma stratejisini değiştirecek CQL'ler: kms
    ALTER TABLE kms.organizations WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE kms.maps WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE kms.apps WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE kms.app_credentials WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE kms.api_products WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE kms.apiproducts_appslist WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE kms.api_resources WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE kms.app_end_user WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE kms.oauth_20_authorization_codes WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE kms.oauth_20_access_tokens WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE kms.oauth_10_request_tokens WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE kms.oauth_10_access_tokens WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE kms.oauth_10_verifiers WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE kms.app_enduser_tokens WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    
  2. Anahtar alanı için sıkıştırma stratejisini değiştirmeye yönelik CQL'ler: user_settings
    ALTER TABLE user_settings.user_settings WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    
  3. Anahtar alanı için sıkıştırma stratejisini değiştirmeye yönelik CQL'ler: keyvaluemap
    ALTER TABLE keyvaluemap.keyvaluemaps_r21 WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    
  4. Anahtar alanı için sıkıştırma stratejisini değiştirecek CQL'ler: devconnect
    ALTER TABLE devconnect.developers WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE devconnect.companies WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE devconnect.company_developers WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    
  5. Anahtar alanı için sıkıştırma stratejisini değiştirmeye yönelik CQL'ler: counter
    ALTER TABLE counter.counters_current_version WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE counter.counters_with_expiry WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE counter.counters WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE counter.key_timestamp_count WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE counter.timestamp_key WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE counter.period_timestamp WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE counter.gateway_quota WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    
  6. Anahtar alanı için sıkıştırma stratejisini değiştirecek CQL'ler: cache
    ALTER TABLE cache.cache_entries WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE cache.cache_sequence_id_r24 WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    
  7. Anahtar alanı için sıkıştırma stratejisini değiştirmeye yönelik CQL'ler: auth
    ALTER TABLE auth.totp WITH compaction = {'class' : 'LeveledCompactionStrategy'};
  8. Anahtar alanı için sıkıştırma stratejisini değiştirecek CQL'ler: audit
    ALTER TABLE audit.audits WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE audit.audits_ref WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    
  9. Anahtar alanı için sıkıştırma stratejisini değiştirecek CQL'ler: apprepo
    ALTER TABLE apprepo.organizations WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE apprepo.environments WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE apprepo.apiproxies WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE apprepo.apiproxy_revisions WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE apprepo.api_proxy_revisions_r21 WITH compaction = {'class' : 'LeveledCompactionStrategy'};
  10. Anahtar alanı için sıkıştırma stratejisini değiştirmeye yönelik CQL'ler: apimodel_v2
    ALTER TABLE apimodel_v2.apis WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE apimodel_v2.apis_revision WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE apimodel_v2.resource WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE apimodel_v2.method WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE apimodel_v2.revision_counters WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE apimodel_v2.template_counters WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE apimodel_v2.template WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE apimodel_v2.credentials WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE apimodel_v2.credentialsv2 WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE apimodel_v2.schemas WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE apimodel_v2.security WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE apimodel_v2.template_auth WITH compaction = {'class' : 'LeveledCompactionStrategy'};
  11. Anahtar alanı için sıkıştırma stratejisini değiştirecek CQL'ler: identityzone
    ALTER TABLE identityzone.IdentityZones WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE identityzone.OrgToIdentityZone WITH compaction = {'class' : 'LeveledCompactionStrategy'};
  12. Anahtar alanı için sıkıştırma stratejisini değiştirecek CQL'ler: dek
    ALTER TABLE dek.keys WITH compaction = {'class' : 'LeveledCompactionStrategy'};
  13. Anahtar alanı için sıkıştırma stratejisini değiştirecek CQL'ler: analytics
    ALTER TABLE analytics.custom_aggregates_defn WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE analytics.custom_rules_defn WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE analytics.custom_aggregates_defn_updates WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE analytics.custom_rules_defn_updates WITH compaction = {'class' : 'LeveledCompactionStrategy'};
  14. [Yalnızca para kazanma] Anahtar alanı için sıkıştırma stratejisini değiştiren CQL'ler: mint
    ALTER TABLE mint.limits WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE mint.suspended_developer_products WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE mint.invitations WITH compaction = {'class' : 'LeveledCompactionStrategy'};
  15. [Yalnızca para kazanma] Anahtar alanı için sıkıştırma stratejisini değiştiren CQL'ler: taurus
    ALTER TABLE taurus.triggers WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE taurus.job_details WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE taurus.org_triggers WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE taurus.triggers_suite WITH compaction = {'class' : 'LeveledCompactionStrategy'};
  16. [Yalnızca para kazanma] Anahtar alanı için sıkıştırma stratejisini değiştiren CQL'ler: notification
    ALTER TABLE notification.notification_service_item WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE notification.notification_service_black_list_item WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE notification.notification_email_template_item WITH compaction = {'class' : 'LeveledCompactionStrategy'};

Dizinleri yeniden oluşturma

Bu adımın, sıkıştırma stratejisi değişikliğinden sonra uygulanması gerekir. Aşağıdaki nodetool komutları her bir Cassandra düğümünde tek tek çalıştırın.

Aşağıdaki 7 ila 9. adımlar yalnızca para kazanma özelliğini kullanıyorsanız geçerlidir.

  1. Anahtar alanı için dizinleri yeniden oluşturun: kms

    nodetool rebuild_index kms api_products api_products_organization_name_idx
    nodetool rebuild_index kms app_credentials app_credentials_api_products_idx
    nodetool rebuild_index kms app_credentials app_credentials_organization_app_id_idx
    nodetool rebuild_index kms app_credentials app_credentials_organization_name_idx
    nodetool rebuild_index kms app_end_user app_end_user_app_id_idx
    nodetool rebuild_index kms apps apps_app_family_idx
    nodetool rebuild_index kms apps apps_app_id_idx
    nodetool rebuild_index kms apps apps_app_type_idx
    nodetool rebuild_index kms apps apps_name_idx
    nodetool rebuild_index kms apps apps_organization_name_idx
    nodetool rebuild_index kms apps apps_parent_id_idx
    nodetool rebuild_index kms apps apps_parent_status_idx
    nodetool rebuild_index kms apps apps_status_idx
    nodetool rebuild_index kms maps maps_organization_name_idx
    nodetool rebuild_index kms oauth_10_access_tokens oauth_10_access_tokens_app_id_idx
    nodetool rebuild_index kms oauth_10_access_tokens oauth_10_access_tokens_consumer_key_idx
    nodetool rebuild_index kms oauth_10_access_tokens oauth_10_access_tokens_organization_name_idx
    nodetool rebuild_index kms oauth_10_access_tokens oauth_10_access_tokens_status_idx
    nodetool rebuild_index kms oauth_10_request_tokens oauth_10_request_tokens_consumer_key_idx
    nodetool rebuild_index kms oauth_10_request_tokens oauth_10_request_tokens_organization_name_idx
    nodetool rebuild_index kms oauth_10_verifiers oauth_10_verifiers_organization_name_idx
    nodetool rebuild_index kms oauth_10_verifiers oauth_10_verifiers_request_token_idx
    nodetool rebuild_index kms oauth_20_access_tokens oauth_20_access_tokens_app_id_idx
    nodetool rebuild_index kms oauth_20_access_tokens oauth_20_access_tokens_client_id_idx
    nodetool rebuild_index kms oauth_20_access_tokens oauth_20_access_tokens_refresh_token_idx
    nodetool rebuild_index kms oauth_20_authorization_codes oauth_20_authorization_codes_client_id_idx
    nodetool rebuild_index kms oauth_20_authorization_codes oauth_20_authorization_codes_organization_name_idx
    
  2. Keyspace için dizinleri yeniden oluştur: devconnect

    nodetool rebuild_index devconnect companies companies_name_idx
    nodetool rebuild_index devconnect companies companies_organization_name_idx
    nodetool rebuild_index devconnect companies companies_status_idx
    nodetool rebuild_index devconnect company_developers company_developers_company_name_idx
    nodetool rebuild_index devconnect company_developers company_developers_developer_email_idx
    nodetool rebuild_index devconnect company_developers company_developers_organization_name_idx
    nodetool rebuild_index devconnect developers developers_email_idx
    nodetool rebuild_index devconnect developers developers_organization_name_idx
    nodetool rebuild_index devconnect developers developers_status_idx
    
  3. Anahtar alanı için dizinleri yeniden oluşturun: cache

    nodetool rebuild_index cache cache_entries cache_entries_cache_name_idx
    
  4. Keyspace için dizinleri yeniden oluştur: audit

    nodetool rebuild_index audit audits audits_operation_idx
    nodetool rebuild_index audit audits audits_requesturi_idx
    nodetool rebuild_index audit audits audits_responsecode_idx
    nodetool rebuild_index audit audits audits_timestamp_idx
    nodetool rebuild_index audit audits audits_user_idx
    
  5. Keyspace için dizinleri yeniden oluştur: apimodel_v2

    nodetool rebuild_index apimodel_v2 apis a_name
    nodetool rebuild_index apimodel_v2 apis a_org_name
    nodetool rebuild_index apimodel_v2 apis_revision ar_a_active_rev
    nodetool rebuild_index apimodel_v2 apis_revision ar_a_def_index_template
    nodetool rebuild_index apimodel_v2 apis_revision ar_a_def_method_template
    nodetool rebuild_index apimodel_v2 apis_revision ar_a_latest_rev
    nodetool rebuild_index apimodel_v2 apis_revision ar_a_name
    nodetool rebuild_index apimodel_v2 apis_revision ar_a_uuid
    nodetool rebuild_index apimodel_v2 apis_revision ar_base_url
    nodetool rebuild_index apimodel_v2 apis_revision ar_is_active
    nodetool rebuild_index apimodel_v2 apis_revision ar_is_latest
    nodetool rebuild_index apimodel_v2 apis_revision ar_name
    nodetool rebuild_index apimodel_v2 apis_revision ar_org_name
    nodetool rebuild_index apimodel_v2 apis_revision ar_rel_ver
    nodetool rebuild_index apimodel_v2 apis_revision ar_rev_num
    nodetool rebuild_index apimodel_v2 method m_a_name
    nodetool rebuild_index apimodel_v2 method m_api_uuid
    nodetool rebuild_index apimodel_v2 method m_ar_uuid
    nodetool rebuild_index apimodel_v2 method m_base_url
    nodetool rebuild_index apimodel_v2 method m_name
    nodetool rebuild_index apimodel_v2 method m_org_name
    nodetool rebuild_index apimodel_v2 method m_r_name
    nodetool rebuild_index apimodel_v2 method m_r_uuid
    nodetool rebuild_index apimodel_v2 method m_res_path
    nodetool rebuild_index apimodel_v2 method m_rev_num
    nodetool rebuild_index apimodel_v2 resource r_a_name
    nodetool rebuild_index apimodel_v2 resource r_api_uuid
    nodetool rebuild_index apimodel_v2 resource r_ar_uuid
    nodetool rebuild_index apimodel_v2 resource r_base_url
    nodetool rebuild_index apimodel_v2 resource r_name
    nodetool rebuild_index apimodel_v2 resource r_org_name
    nodetool rebuild_index apimodel_v2 resource r_res_path
    nodetool rebuild_index apimodel_v2 resource r_rev_num
    nodetool rebuild_index apimodel_v2 schemas s_api_uuid
    nodetool rebuild_index apimodel_v2 schemas s_ar_uuid
    nodetool rebuild_index apimodel_v2 security sa_api_uuid
    nodetool rebuild_index apimodel_v2 security sa_ar_uuid
    nodetool rebuild_index apimodel_v2 template t_a_name
    nodetool rebuild_index apimodel_v2 template t_a_uuid
    nodetool rebuild_index apimodel_v2 template t_entity
    nodetool rebuild_index apimodel_v2 template t_name
    nodetool rebuild_index apimodel_v2 template t_org_name
    nodetool rebuild_index apimodel_v2 template_auth au_api_uuid
    
  6. Keyspace için dizinleri yeniden oluştur: dek

    nodetool rebuild_index dek keys usecase_index
    
  7. [Yalnızca para kazanma] Anahtar alanı için dizinleri yeniden oluşturun: mint

    nodetool rebuild_index mint limits limits_created_date_idx
    nodetool rebuild_index mint limits limits_id_idx
    nodetool rebuild_index mint limits limits_org_id_idx
    nodetool rebuild_index mint limits limits_updated_date_idx
    nodetool rebuild_index mint suspended_developer_products suspended_developer_products_created_date_idx
    nodetool rebuild_index mint suspended_developer_products suspended_developer_products_currency_idx
    nodetool rebuild_index mint suspended_developer_products suspended_developer_products_dev_id_idx
    nodetool rebuild_index mint suspended_developer_products suspended_developer_products_id_idx
    nodetool rebuild_index mint suspended_developer_products suspended_developer_products_limit_id_idx
    nodetool rebuild_index mint suspended_developer_products suspended_developer_products_org_id_idx
    nodetool rebuild_index mint suspended_developer_products suspended_developer_products_prod_id_idx
    nodetool rebuild_index mint suspended_developer_products suspended_developer_products_reason_code_idx
    nodetool rebuild_index mint suspended_developer_products suspended_developer_products_sub_org_id_idx
    nodetool rebuild_index mint invitations invitations_company_id_idx
    nodetool rebuild_index mint invitations invitations_created_at_idx
    nodetool rebuild_index mint invitations invitations_developer_id_idx
    nodetool rebuild_index mint invitations invitations_lastmodified_at_idx
    nodetool rebuild_index mint invitations invitations_org_id_idx
    
  8. [Yalnızca para kazanma] Anahtar alanı için dizinleri yeniden oluşturun: taurus

    nodetool rebuild_index taurus triggers triggers_env_idx
    nodetool rebuild_index taurus triggers triggers_job_id_idx
    nodetool rebuild_index taurus triggers triggers_org_id_idx
    nodetool rebuild_index taurus job_details job_details_job_class_name_idx
    nodetool rebuild_index taurus job_details job_details_job_group_idx
    nodetool rebuild_index taurus job_details job_details_job_name_idx
    nodetool rebuild_index taurus org_triggers org_triggers_org_id_idx
    nodetool rebuild_index taurus triggers_suite triggers_suite_group_idx
    nodetool rebuild_index taurus triggers_suite triggers_suite_name_idx
    nodetool rebuild_index taurus triggers_suite triggers_suite_suite_id_idx
    
  9. [Yalnızca para kazanma] Anahtar alanı için dizinleri yeniden oluşturun: notification

    nodetool rebuild_index notification notification_service_item notification_service_item_org_id_idx
    nodetool rebuild_index notification notification_service_item notification_service_item_status_idx
    nodetool rebuild_index notification notification_service_black_list_item notification_service_black_list_item_org_id_idx
    nodetool rebuild_index notification notification_service_black_list_item notification_service_black_list_item_to_email_idx
    nodetool rebuild_index notification notification_email_template_item notification_email_template_item_name_idx
    nodetool rebuild_index notification notification_email_template_item notification_email_template_item_org_id_idx
    

Doğrulama

  1. Ek 1'deki talimatları uygulayarak şemadaki sıkıştırma stratejisi değişikliğinin geçerli olup olmadığını kontrol edin.
  2. Strateji değişikliğinden sonra sıkıştırmanın başarıyla çalıştığını ve verilerin sıkıştırıldığını doğrulayın:
    1. Tüm sıkıştırma işlemlerinin tamamlanıp tamamlanmadığını ve bekleyen bir işlem olup olmadığını görmek için her Cassandra düğümünde aşağıdaki nodetool komutunu çalıştırın:
      nodetool compactionstats
    2. Yukarıdaki komut kullanılarak sıkıştırma işlemlerinin beklemede olmadığından emin olduktan sonra, sıkıştırma stratejisi değişikliği CQL'sinin yürütüldüğü zaman damgasından sonraki bir zaman damgası olup olmadığını kontrol etmek için veri dosyalarının son değiştirilme zaman damgasını (/opt/apigee/data/apigee-cassandra/data/ altında) kontrol edin.

Geri al

Geri alma işlemi yapmanız gerekiyorsa aşağıdaki seçeneklerden birini belirleyebilirsiniz:

1. seçenek: Değişikliği geri alma

Sıkıştırma stratejisini, başlangıçta kullandığınız stratejiye geri alın.

Sıkıştırma stratejisini değiştirmek için daha önce çalıştırdığınız CQL isteminde benzer ALTER TABLE komutlarını çalıştırın.

Sıkıştırma stratejisini LeveledCompactionStrategy olarak değiştirirken dizinleri zaten yeniden oluşturduysanız dizinleri tekrar yeniden oluşturmanız gerekir. Tüm dizinleri yeniden oluşturmak için daha önce uyguladığınız adımları tekrarlayın. Daha önce dizinleri yeniden oluşturmadıysanız geri alma sırasında dizinleri yeniden oluşturmanız gerekmez.

2. seçenek: Yedekten tam veri geri yükleme

Tüm anahtar alanları için yedekten veri geri yükleme:

Yedekten geri yükleme başlıklı makalede belirtilen geri yükleme talimatlarını uygulayın.

Ek 1: Sıkıştırma stratejisini kontrol etme

Sıkıştırma stratejileri, Cassandra'da tablo düzeyinde ayarlanır. Her tablonun sıkıştırma stratejisini kontrol etmek için aşağıdaki sorguları kullanabilirsiniz.

CQL'leri CQL isteminde çalıştırabilirsiniz. CQL istemini çağırmak için:

/opt/apigee/apigee-cassandra/bin/cqlsh `hostname -i`

Aşağıdakine benzer bir yanıt görürsünüz:

Connected to apigee at XX.XX.XX.XX:9042.
[cqlsh 6.2.0 | Cassandra 5.0.8 | CQL spec 3.4.7 | Native protocol v5]
Use HELP for help.
cqlsh>

Mevcut sıkıştırma stratejisini aşağıdaki şekilde belirleyebilirsiniz:

Çıktıdaki her satır, bir anahtar alanındaki bir tabloyla ilgilidir. Her satır için sıkıştırma sütunu, tablo tarafından kullanılan sıkıştırma stratejisini gösterir.

  • Sıkıştırma stratejisi SizeTieredCompactionStrategy olarak ayarlanırsa aşağıdaki sorgularda compaction sütunu şu şekilde olur:
  • {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
  • Sıkıştırma stratejisi LeveledCompactionStrategy olarak ayarlanırsa aşağıdaki sorgularda compaction sütunu şu şekilde olur:
  • {'class': 'org.apache.cassandra.db.compaction.LeveledCompactionStrategy'}

Belirli bir anahtar alanındaki her tablo için sıkıştırma stratejisini belirlemek üzere aşağıdaki sorgular çalıştırılabilir:

select keyspace_name, table_name, compaction from system_schema.tables where keyspace_name = 'kms';
select keyspace_name, table_name, compaction from system_schema.tables where keyspace_name = 'user_settings';
select keyspace_name, table_name, compaction from system_schema.tables where keyspace_name = 'keyvaluemap';
select keyspace_name, table_name, compaction from system_schema.tables where keyspace_name = 'devconnect';
select keyspace_name, table_name, compaction from system_schema.tables where keyspace_name = 'counter';
select keyspace_name, table_name, compaction from system_schema.tables where keyspace_name = 'cache';
select keyspace_name, table_name, compaction from system_schema.tables where keyspace_name = 'auth';
select keyspace_name, table_name, compaction from system_schema.tables where keyspace_name = 'audit';
select keyspace_name, table_name, compaction from system_schema.tables where keyspace_name = 'apprepo';
select keyspace_name, table_name, compaction from system_schema.tables where keyspace_name = 'apimodel_v2';
select keyspace_name, table_name, compaction from system_schema.tables where keyspace_name = 'identityzone';
select keyspace_name, table_name, compaction from system_schema.tables where keyspace_name = 'dek';
select keyspace_name, table_name, compaction from system_schema.tables where keyspace_name = 'analytics';

#If you are using Monetization, check the below as well
select keyspace_name, table_name, compaction from system_schema.tables where keyspace_name = 'mint';
select keyspace_name, table_name, compaction from system_schema.tables where keyspace_name = 'taurus';
select keyspace_name, table_name, compaction from system_schema.tables where keyspace_name = 'notification';