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

Apigee; proxy, önbellek ve jeton verileri de dahil olmak üzere çoğu verisi depolamak için Cassandra veritabanını kullanıyor. Sıkıştırma, veritabanlarında depolanan verilerin boyutunu küçültmek için kullanılan kritik bir süreçtir ve veritabanı işlemlerinin verimli bir şekilde sürdürülebilmesi için son derece önemlidir. 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ırmalarını önerir. LeveledCompactionStrategy, SizeTieredCompactionStrategy ile karşılaştırıldığında daha iyi performans, daha iyi disk kullanımı, daha verimli sıkıştırma sağlar ve daha az boş alan gerektirir.

Apigee 4.52.02 veya sonraki sürümlerin tüm yeni yüklemeleri Cassandra'yı LeveledCompactionStrategy ile otomatik olarak yapılandırır. Bununla birlikte, Apigee'nin eski bir sürümünü kullanıyorsanız veya daha eski bir sürümden Apigee 4.52.02'ye yükselttiyseniz, yüklemenizde SizeTieredCompactionStrategy ile Cassandra kullanılmaya devam edebilir.

Sıkıştırma stratejinizi LeveledCompactionStrategy dışında bir değerle değiştirmeniz önerilmemesine rağmen bu belgede, gerektiğinde değişikliği nasıl yapacağınız özetlenmekte ve mevcut sıkıştırma stratejinizi kontrol etmeniz için talimatlar sunulmaktadır. Sıkıştırma stratejisini önerilmeyen bir seçenekle değiştirmek, ileride Cassandra yazılımı yükseltmelerinin yaptığınız değişikliklerin üzerine yazılmasına neden olabilir. Standart dışı bir yaklaşım kullanıyorsanız her yükseltmeden sonra sıkıştırma stratejinizi doğrulamanızı öneririz.

Hazırlık

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

Ek 1'deki talimatları uygulayarak tablolardaki mevcut sıkıştırma stratejisini kontrol edebilirsiniz. Sıkıştırma stratejisi zaten LeveledCompactionStrategy ise bunun nedeni OPDK 4.51 veya sonraki bir sürümün yüklenmesiyle başlaması ya da daha önce Apigee tarafından önerildiği şekilde LeveledCompactionStrategy olarak değiştirilmiş olması olabilir. Zaten LeveledCompactionStrategy kullanıyorsanız Apigee, bu stratejiye devam etmenizi ve değişiklik yapmaktan kaçınmanızı önerir. Bununla birlikte, Edge for Private Cloud'u siz işlettiğiniz için aşağıdaki talimatlarda sıkıştırma stratejisinin istendiğinde nasıl değiştirileceği açıklanmaktadır.

Yedekleme

Sıkıştırma stratejisinin değiştirilmesi Cassandra düğümlerinde tam bir sıkıştırma döngüsünü tetiklediğinden, sıkıştırma yükü ve eş zamanlı uygulama trafiği nedeniyle bazı gecikmeler yaşanabilir. Cassandra düğümlerini yedeklerden geri yüklemek için bu değişikliğin geri alınması gerekebilir. Sıkıştırma stratejisini değiştirmeden önce verilerinizi nasıl yedekleyeceğinizi öğrenmek için Nasıl yedekleme yapılır? bölümünü inceleyin.

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

Sıkıştırma stratejisi LeveledCompactionStrategy olarak değiştirildikten sonra uzun süre korunuyor. Veri sıkıştırmanın boyutuna bağlı olarak çalışma zamanı değişiklik gösterebilir. Sıkıştırma sırasında kullanıyorsanız Cassandra daha fazla sistem kaynağı kullanabilir. Sıkıştırma işleminin çok fazla kaplamamasını sağlamak API Çalışma Zamanı isteklerini aksatır. işleme hızı.

Sıkıştırma işleme hızını maksimum değere ayarlamak için tüm düğümlerde aşağıdaki nodetool komutunu çalıştırın tüm Cassandra düğümlerinde 128 MB'a:

nodetool setcompactionthroughput 128

Sanal makineleri sıkıştırmalar için boyutlandırma

Bu değişikliği uygulamadan önce Cassandra düğümlerinin yeterli CPU ve bellek kaynağına sahip olduğundan emin olun. Bu değişikliği uygulamadan önce lütfen hiçbir Cassandra düğümünün CPU yükünün% 25'inden fazla çalışmadığı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ışması beklenir. Bu nedenle, sıkıştırma stratejisinin trafiğin düşük olduğu zamanlarda değiştirilmesi önerilir.

Aşamalı çalıştırmalar

Dizinlerin her düğümde tek tek yeniden oluşturulması gerekeceğinden, özellikle büyük Cassandra kümeleri çalıştırıyorsanız tüm düğümlerin değişimini gün içinde tamamlayamayabilirsiniz. Tek seferde bir şemanın veya tablonun sıkıştırma stratejisini 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 tuş 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ışacak şekilde ayrılabilir.

Ö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

Genel 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 ALTER TABLE komutunu her tabloda teker teker yürütmeniz gerekir. Örnek bir ALTER TABLE komutu şu şekilde 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 Belirlemek için Tabloyu Değiştirme

Tek seferde bir tuş alanı 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 numaralı telefondan Apigee'ye bağlanıldı.

[cqlsh 5.0.1 | Cassandra 3.11.16 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
cqlsh>

Aşağıdaki komutlar, Sıkıştırma Stratejisinin LeveledCompactionStrategy olarak değiştirilmesini kapsamaktadır 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ştirmek üzere 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ştirmek üzere 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ştirmek üzere CQL'ler: keyvaluemap
    ALTER TABLE keyvaluemap.keyvaluemaps_r21 WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    
  4. Anahtar alanı için sıkıştırma stratejisini değiştirmek üzere 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ştirmek üzere 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ştirmek üzere 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ştirmek üzere CQL'ler: auth
    ALTER TABLE auth.totp WITH compaction = {'class' : 'LeveledCompactionStrategy'};
  8. Anahtar alanı için sıkıştırma stratejisini değiştirmek üzere 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ştirmek üzere 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ştirmek üzere 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ştirmek üzere 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ştirmek üzere CQL'ler: dek
    ALTER TABLE dek.keys WITH compaction = {'class' : 'LeveledCompactionStrategy'};
  13. Anahtar alanı için sıkıştırma stratejisini değiştirmek üzere 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ştirecek 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ştirecek 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ştirecek 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ştur

Bu adımın, tüm sıkıştırma stratejisi değişikliklerinden sonra yürütülmesi gerekir. Lütfen aşağıdaki nodetool komutlarını her 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. Şu tuş alanı için dizinleri yeniden oluştur: 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. Şu tuş alanı 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. Şu tuş alanı için dizinleri yeniden oluştur: cache

    nodetool rebuild_index cache cache_entries cache_entries_cache_name_idx
    
  4. Şu tuş alanı 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. Şu tuş alanı 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. Şu tuş alanı 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ştur: 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ştur: 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ştur: 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 şema üzerindeki sıkıştırma stratejisi değişikliğinin etkili olup olmadığını kontrol edin.
  2. Sıkıştırma işleminin başarıyla çalıştığını ve strateji değişikliğinden sonra verilerin sıkıştırıldığını doğrulama:
    1. Tüm sıkıştırma işlemlerinin tamamlanıp beklemede olmadığını görmek için, her Cassandra düğümünde aşağıdaki nodetool komutunu çalıştırın:
      nodetool compactionstats
    2. Bekleyen sıkıştırma olmadığından emin olmak için yukarıdaki komut kullanılarak doğrulandıktan sonra, veri dosyalarının (/opt/apigee/data/apigee-cassandra/data/ altında), sıkıştırma stratejisi değişikliği CQL'sinin yürütüldüğü zaman damgasından sonra olup olmadığını kontrol edin.

Geri al

Geri alma işlemi gerçekleştirmeniz gerekirse aşağıdaki seçeneklerden birini belirleyebilirsiniz:

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

Sıkıştırma stratejisini en başta sahip olduğunuz stratejiye geri döndürün.

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

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

2. Seçenek: Yedekten tam verileri geri yükleme

Tüm tuş alanları için verileri yedekten geri yükleyin:

Lütfen Yedekten geri yükleme başlıklı makalede belirtildiği şekilde geri yükleme talimatlarını uygulayın.

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

Cassandra'da sıkıştırma stratejileri masa düzeyinde ayarlanır. Her bir 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ğıdaki gibi bir yanıt görürsünüz:

Connected to apigee at XX.XX.XX.XX:9042.
[cqlsh 5.0.1 | Cassandra 3.11.16 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
cqlsh>

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

Çıkıştaki her satır, bir tuş alanı içindeki bir tabloya aittir. 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 SizeTieredCompactionstrateji olarak ayarlanırsa aşağıdaki sorgularda bulunan compaction sütunu şöyle olur:
  • {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
  • Sıkıştırma stratejisi LeveledCompactionStrateji olarak ayarlanırsa aşağıdaki sorgularda bulunan sıkıştırma sütunu şöyle olur:
  • {'class': 'org.apache.cassandra.db.compaction.LeveledCompactionStrategy'}

Belirli bir anahtar alanındaki her bir 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';