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:
-
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'}; -
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:
- Her tablonun sıkıştırma stratejisini değiştirin.
- 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 LeveledCompactionStrategyALTER TABLEkms.oauth_20_access_tokens WITH compaction = {'class' : 'LeveledCompactionStrategy'}; # To change to SizeTieredCompactionStrategyALTER TABLEkms.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.
- Anahtar alanı için sıkıştırma stratejisini değiştirecek CQL'ler:
kmsALTER 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'}; - Anahtar alanı için sıkıştırma stratejisini değiştirmeye yönelik CQL'ler:
user_settingsALTER TABLE user_settings.user_settings WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - Anahtar alanı için sıkıştırma stratejisini değiştirmeye yönelik CQL'ler:
keyvaluemapALTER TABLE keyvaluemap.keyvaluemaps_r21 WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - Anahtar alanı için sıkıştırma stratejisini değiştirecek CQL'ler:
devconnectALTER TABLE devconnect.developers WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE devconnect.companies WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE devconnect.company_developers WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - Anahtar alanı için sıkıştırma stratejisini değiştirmeye yönelik CQL'ler:
counterALTER 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'}; - Anahtar alanı için sıkıştırma stratejisini değiştirecek CQL'ler:
cacheALTER TABLE cache.cache_entries WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE cache.cache_sequence_id_r24 WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - Anahtar alanı için sıkıştırma stratejisini değiştirmeye yönelik CQL'ler:
authALTER TABLE auth.totp WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - Anahtar alanı için sıkıştırma stratejisini değiştirecek CQL'ler:
auditALTER TABLE audit.audits WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE audit.audits_ref WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - Anahtar alanı için sıkıştırma stratejisini değiştirecek CQL'ler:
apprepoALTER 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'}; - Anahtar alanı için sıkıştırma stratejisini değiştirmeye yönelik CQL'ler:
apimodel_v2ALTER 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'}; - Anahtar alanı için sıkıştırma stratejisini değiştirecek CQL'ler:
identityzoneALTER TABLE identityzone.IdentityZones WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE identityzone.OrgToIdentityZone WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - Anahtar alanı için sıkıştırma stratejisini değiştirecek CQL'ler:
dekALTER TABLE dek.keys WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - Anahtar alanı için sıkıştırma stratejisini değiştirecek CQL'ler:
analyticsALTER 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'}; - [Yalnızca para kazanma] Anahtar alanı için sıkıştırma stratejisini değiştiren CQL'ler:
mintALTER 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'}; - [Yalnızca para kazanma] Anahtar alanı için sıkıştırma stratejisini değiştiren CQL'ler:
taurusALTER 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'}; - [Yalnızca para kazanma] Anahtar alanı için sıkıştırma stratejisini değiştiren CQL'ler:
notificationALTER 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.
-
Anahtar alanı için dizinleri yeniden oluşturun:
kmsnodetool 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
-
Keyspace için dizinleri yeniden oluştur:
devconnectnodetool 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
-
Anahtar alanı için dizinleri yeniden oluşturun:
cachenodetool rebuild_index cache cache_entries cache_entries_cache_name_idx
-
Keyspace için dizinleri yeniden oluştur:
auditnodetool 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
-
Keyspace için dizinleri yeniden oluştur:
apimodel_v2nodetool 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
-
Keyspace için dizinleri yeniden oluştur:
deknodetool rebuild_index dek keys usecase_index
-
[Yalnızca para kazanma] Anahtar alanı için dizinleri yeniden oluşturun:
mintnodetool 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
-
[Yalnızca para kazanma] Anahtar alanı için dizinleri yeniden oluşturun:
taurusnodetool 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
-
[Yalnızca para kazanma] Anahtar alanı için dizinleri yeniden oluşturun:
notificationnodetool 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
- Ek 1'deki talimatları uygulayarak şemadaki sıkıştırma stratejisi değişikliğinin geçerli olup olmadığını kontrol edin.
- 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:
- 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
- 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.
- 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:
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:
- 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.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}{'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';