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
'e kıyasla daha iyi performans, daha iyi disk kullanımı, daha verimli sıkıştırma ve daha az boş alan sunar.
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.53.00'a yükselttiyseniz, yüklemenizde SizeTieredCompactionStrategy
ile Cassandra kullanılmaya devam edebilir.
Sıkıştırma stratejisinin LeveledCompactionStrategy
dışında bir değerle değiştirilmesi önerilmez. Ancak bu dokümanda, gerekirse değişikliğin nasıl yapılacağı özetlenmiştir ve mevcut sıkıştırma stratejinizi kontrol etme talimatları verilmiştir. Sıkıştırma stratejisini önerilmeyen bir seçenekle değiştirmek, gelecekteki Cassandra yazılım yükseltmelerinin değişikliklerinizin üzerine yazması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 sıkıştırmalar uzun süre çalışabilir. Veri sıkıştırmanın boyutuna bağlı olarak çalışma zamanı değişiklik gösterebilir. Sıkıştırma döngüsü sırasında Cassandra daha fazla sistem kaynağı kullanabilir. Sıkıştırmanın çok fazla sistem kaynağını tüketmemesini sağlamak için (bu durum API Runtime isteklerini kesintiye uğratabilir) sıkıştırma veri akışı için sınırlar belirlemenizi öneririz.
Tüm Cassandra düğümlerinde sıkıştırma veri akışını en fazla 128 MB olacak şekilde ayarlamak için düğümlerin her birinde aşağıdaki nodetool
komutunu çalıştırın:
nodetool setcompactionthroughput 128
Sıkıştırma için sanal makineleri boyutlandırma
Bu değişikliği yapmadan ö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ıştırılması beklenir. Bu nedenle, sıkıştırma stratejisinin trafik yoğunluğu düşük dönemlerde 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 bir gün içinde tüm düğümlerin değişimini 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:
-
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şturun:
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:
- 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 ALTER TABLE
komutunu her tabloda teker teker yürütmeniz gerekir. Örnek bir ALTER TABLE
komutu aşağıdaki gibi görünür:
# To change to LeveledCompactionStrategyALTER TABLE
kms.oauth_20_access_tokens WITH compaction = {'class' : 'LeveledCompactionStrategy'}; # To change to SizeTieredCompactionStrategyALTER 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 kapsar ancak benzer komutlar diğer sıkıştırma stratejilerine geçmek için de kullanılabilir.
Aşağıdaki 14 ila 16. adımlar, yalnızca para kazanma özelliğini kullanıyorsanız geçerlidir.
kms
anahtar alanı için sıkıştırma stratejisini değiştirmek üzere CQL'lerALTER 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ştirmek üzere CQL'ler:
user_settings
ALTER TABLE user_settings.user_settings WITH compaction = {'class' : 'LeveledCompactionStrategy'};
keyvaluemap
anahtar alanı için sıkıştırma stratejisini değiştirmek üzere CQL'lerALTER TABLE keyvaluemap.keyvaluemaps_r21 WITH compaction = {'class' : 'LeveledCompactionStrategy'};
- 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'};
counter
anahtar alanı için sıkıştırma stratejisini değiştirmek üzere CQL'lerALTER 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ş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'};
auth
anahtar alanı için sıkıştırma stratejisini değiştirmek üzere CQL'lerALTER TABLE auth.totp WITH compaction = {'class' : 'LeveledCompactionStrategy'};
audit
anahtar alanı için sıkıştırma stratejisini değiştirmek üzere CQL'lerALTER TABLE audit.audits WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE audit.audits_ref WITH compaction = {'class' : 'LeveledCompactionStrategy'};
apprepo
anahtar alanı için sıkıştırma stratejisini değiştirmek üzere CQL'lerALTER 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'};
apimodel_v2
anahtar alanı için sıkıştırma stratejisini değiştirmek üzere CQL'lerALTER 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ştirmek üzere CQL'ler:
identityzone
ALTER 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ştirmek üzere CQL'ler:
dek
ALTER TABLE dek.keys WITH compaction = {'class' : 'LeveledCompactionStrategy'};
- 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'};
- [Yalnızca para kazanma] Anahtar alanı için sıkıştırma stratejisini değiştirmek üzere 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'};
- [Yalnızca para kazanma] Anahtar alanı için sıkıştırma stratejisini değiştirmek üzere 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'};
- [Yalnızca para kazanma] Anahtar alanı için sıkıştırma stratejisini değiştirmek üzere 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, sıkıştırma stratejisi değişikliğinden sonra uygulanması 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.
-
Ş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
-
Anahtar alanı için dizinleri yeniden oluşturun:
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
-
Şu tuş alanı için dizinleri yeniden oluştur:
cache
nodetool rebuild_index cache cache_entries cache_entries_cache_name_idx
-
Anahtar alanı için dizinleri yeniden oluşturun:
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
-
Ş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
-
Anahtar alanı için dizinleri yeniden oluşturun:
dek
nodetool rebuild_index dek keys usecase_index
-
[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
-
[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
-
[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
- Ek 1'deki talimatları uygulayarak şemada sıkıştırma stratejisi değişikliğinin geçerli olup olmadığını kontrol edin.
- Sıkıştırma işleminin başarıyla çalıştığını ve strateji değişikliğinin ardından verilerin sıkıştırıldığını doğrulama:
- 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
- Beklemedeki 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) son değiştirilme zaman damgasının, sıkıştırma stratejisi değişikliği CQL'nin yürütüldüğü zaman damgasından sonra olup olmadığını 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 gerekirse 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ı ç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: Yedekteki tüm verileri geri yükleme
Tüm anahtar alanları için verileri yedekten geri yükleme:
Lütfen Yedeklemelerden geri yükleme başlıklı makalede açıklanan 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 isteminde CQL'leri ç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 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 ayarlanmışsa aşağıdaki sorgulardaki compaction sütunu şöyle görünür:
- Sıkıştırma stratejisi LeveledCompactionStrategy olarak ayarlanırsa aşağıdaki sorgulardaki compaction sütunu şöyle görünür:
{'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 tablonun sıkıştırma stratejisini belirlemek için 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';