Apigee używa bazy danych Cassandra do przechowywania większości danych, w tym danych dotyczących serwerów proxy, pamięci podręcznych i tokenów. Kompaktowanie to kluczowy proces zmniejszania rozmiaru danych przechowywanych w bazach danych, niezbędny do utrzymania wydajności operacji na bazie danych. Cassandra obsługuje różne strategie kompaktowania. Apigee zaleca, aby wszyscy klienci Edge dla chmury prywatnej używali klastrów Cassandra ze strategią LeveledCompactionStrategy, a nie domyślną strategią SizeTieredCompactionStrategy, we wszystkich tabelach. LeveledCompactionStrategy zapewnia lepszą wydajność, lepsze wykorzystanie dysku, wydajniejsze kompaktowanie i wymaga mniej wolnego miejsca niż SizeTieredCompactionStrategy.
Wszystkie nowe instalacje Edge dla chmury prywatnej 4.52.02 lub nowszej automatycznie konfigurują system Cassandra z LeveledCompactionStrategy. Jeśli jednak przeprowadzisz aktualizację do Edge dla chmury prywatnej 4.54.00 z wcześniejszej wersji, Twoja instalacja może nadal używać systemu Cassandra ze strategią SizeTieredCompactionStrategy.
Chociaż nie zalecamy zmiany strategii kompaktowania na inną niż LeveledCompactionStrategy, w tym dokumencie opisujemy, jak w razie potrzeby wprowadzić tę zmianę, oraz podajemy instrukcje sprawdzania bieżącej strategii kompaktowania. Zmiana strategii kompaktowania na opcję niezgodną z zaleceniami może spowodować, że przyszłe aktualizacje oprogramowania Cassandra zastąpią Twoje zmiany. Jeśli używasz niestandardowego podejścia, zalecamy sprawdzenie strategii kompaktowania po każdej aktualizacji.
Przygotowanie
Wymagania wstępne
W Edge dla chmury prywatnej 4.54.00 system Cassandra 5.x wymaga JDK 17 (Java 17).
Zanim uruchomisz polecenia nodetool lub cqlsh w węźle Cassandra, upewnij się, że Java 17 jest skonfigurowana jako domyślna wersja Javy (na przykład przez uruchomienie polecenia sudo alternatives --set java JAVA_17_PATH/bin/java lub ustawienie JAVA_HOME na instalację JDK 17).
Sprawdź dotychczasową strategię kompaktowania
Dotychczasową strategię kompaktowania w tabelach możesz sprawdzić, wykonując
instrukcje podane w Dodatku 1.
Jeśli strategia kompaktowania jest już ustawiona na LeveledCompactionStrategy,
może to być spowodowane rozpoczęciem instalacji Edge dla chmury prywatnej
4.51 lub nowszej albo wcześniejszą zmianą na
LeveledCompactionStrategy zgodnie z zaleceniami Apigee. Jeśli używasz już LeveledCompactionStrategy, Apigee zaleca dalsze stosowanie tej strategii i unikanie zmian. Ponieważ jednak Edge for
Private Cloud jest obsługiwany przez Ciebie, poniższe instrukcje wyjaśniają, jak
w razie potrzeby zmienić strategię kompaktowania.
Kopia zapasowa
Zmiana strategii kompaktowania powoduje uruchomienie pełnego cyklu kompaktowania w węzłach Cassandra, co może spowodować pewne opóźnienia ze względu na obciążenie związane z kompaktowaniem i jednoczesny ruch aplikacji. Cofnięcie tej zmiany nie wymaga przywracania z kopii zapasowej. Możesz bezpośrednio przywrócić strategię kompaktowania zgodnie z opisem w sekcji Opcja 1. Cofnij zmianę. Jednak na wszelki wypadek przed zmianą strategii kompaktowania utwórz kopię zapasową danych zgodnie z instrukcjami w artykule Jak utworzyć kopię zapasową.
Przepustowość kompaktowania
Po zmianie strategii kompaktowania na LeveledCompactionStrategy kompaktowanie może trwać
długo. Czas działania może się różnić w zależności od rozmiaru kompaktowania danych. Podczas cyklu kompaktowania
system Cassandra może zużywać więcej zasobów systemowych. Aby kompaktowanie nie zajmowało zbyt wielu
zasobów systemowych, co mogłoby zakłócić żądania środowiska wykonawczego interfejsu API, zalecamy ustawienie limitów przepustowości
kompaktowania.
Aby ustawić przepustowość kompaktowania na maksymalnie 128 MB we wszystkich węzłach Cassandra, uruchom to polecenie nodetool w każdym z węzłów:
nodetool setcompactionthroughput 128
Określanie rozmiaru maszyn wirtualnych na potrzeby kompaktowania
Zanim wprowadzisz tę zmianę, upewnij się, że węzły Cassandra mają wystarczającą ilość zasobów procesora i pamięci oraz że obciążenie procesora nie przekracza 25%.
Po zmianie strategii kompaktowania należy uruchomić pełny cykl kompaktowania, dlatego zalecamy zmianę strategii kompaktowania w okresach małego ruchu.
Uruchamianie etapowe
Zmiana wszystkich węzłów w ciągu jednego dnia może być niemożliwa, zwłaszcza jeśli używasz dużych klastrów Cassandra, ponieważ indeksy trzeba odbudować w każdym węźle osobno. Możesz zmieniać strategię kompaktowania w jednym schemacie lub jednej tabeli naraz. W tym celu zmień tabelę, aby zmienić jej strategię kompaktowania, a następnie odbuduj wszystkie indeksy w tabeli (jeśli istnieją) we wszystkich węzłach. Następnie powtórz powyższą procedurę w przypadku każdej tabeli lub przestrzeni kluczy. Takie uruchomienia w przypadku jednej tabeli lub jednej przestrzeni kluczy można podzielić na kilka dni.
Aby na przykład zmienić strategię kompaktowania tabeli oauth_20_access_tokens w schemacie kms na LeveledCompactionStrategy, możesz wykonać te czynności:
-
Zmień tabelę, aby zmienić strategię kompaktowania, uruchamiając ten kod CQL:
ALTER TABLE kms.oauth_20_access_tokens WITH compaction = {'class' : 'LeveledCompactionStrategy'}; -
Odbuduj wszystkie indeksy tylko w tej tabeli:
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
Zmiana strategii kompaktowania
Zmiana strategii kompaktowania to proces dwuetapowy:
- Zmodyfikuj strategię kompaktowania każdej tabeli.
- Odbuduj wszystkie indeksy w każdym węźle osobno.
Aby zmodyfikować strategię kompaktowania, musisz uruchomić polecenie ALTER TABLE w każdej tabeli osobno. Przykładowe polecenie ALTER TABLE wygląda tak:
# 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'};
Zmień tabelę, aby ustawić nową strategię kompaktowania
Aby zmienić strategię w jednej przestrzeni kluczy naraz, uruchom te polecenia CQL w dowolnym węźle Cassandra. Polecenia CQL można uruchamiać w wierszu poleceń CQL. Instrukcje dotyczące wywoływania wiersza poleceń CQL:
/opt/apigee/apigee-cassandra/bin/cqlsh `hostname -i`
Connected to Apigee at XXXXXXXX:9042.
[cqlsh 6.2.0 | Cassandra 5.0.8 | CQL spec 3.4.7 | Native protocol v5] Use HELP for help. cqlsh>
Poniższe polecenia służą do zmiany strategii kompaktowania na LeveledCompactionStrategy, ale podobne polecenia można użyć do zmiany na inne strategie kompaktowania.
Kroki 14–16 poniżej mają zastosowanie tylko wtedy, gdy używasz monetyzacji.
- Polecenia CQL do zmiany strategii kompaktowania w przestrzeni kluczy:
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'}; - Polecenia CQL do zmiany strategii kompaktowania w przestrzeni kluczy:
user_settingsALTER TABLE user_settings.user_settings WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania w przestrzeni kluczy:
keyvaluemapALTER TABLE keyvaluemap.keyvaluemaps_r21 WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania w przestrzeni kluczy:
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'}; - Polecenia CQL do zmiany strategii kompaktowania w przestrzeni kluczy:
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'}; - Polecenia CQL do zmiany strategii kompaktowania w przestrzeni kluczy:
cacheALTER TABLE cache.cache_entries WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE cache.cache_sequence_id_r24 WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania w przestrzeni kluczy:
authALTER TABLE auth.totp WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania w przestrzeni kluczy:
auditALTER TABLE audit.audits WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE audit.audits_ref WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania w przestrzeni kluczy:
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'}; - Polecenia CQL do zmiany strategii kompaktowania w przestrzeni kluczy:
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'}; - Polecenia CQL do zmiany strategii kompaktowania w przestrzeni kluczy:
identityzoneALTER TABLE identityzone.IdentityZones WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE identityzone.OrgToIdentityZone WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania w przestrzeni kluczy:
dekALTER TABLE dek.keys WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania w przestrzeni kluczy:
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'}; - [Tylko monetyzacja] Polecenia CQL do zmiany strategii kompaktowania w przestrzeni kluczy:
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'}; - [Tylko monetyzacja] Polecenia CQL do zmiany strategii kompaktowania w przestrzeni kluczy:
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'}; - [Tylko monetyzacja] Polecenia CQL do zmiany strategii kompaktowania w przestrzeni kluczy:
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'};
Odbuduj indeksy
Ten krok należy wykonać po każdej zmianie strategii kompaktowania. Uruchom te
polecenia nodetool w każdym węźle Cassandra.
Kroki 7–9 poniżej mają zastosowanie tylko wtedy, gdy używasz monetyzacji.
-
Odbuduj indeksy w przestrzeni kluczy:
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
-
Odbuduj indeksy w przestrzeni kluczy:
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
-
Odbuduj indeksy w przestrzeni kluczy:
cachenodetool rebuild_index cache cache_entries cache_entries_cache_name_idx
-
Odbuduj indeksy w przestrzeni kluczy:
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
-
Odbuduj indeksy w przestrzeni kluczy:
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
-
Odbuduj indeksy w przestrzeni kluczy:
deknodetool rebuild_index dek keys usecase_index
-
[Tylko monetyzacja] Odbuduj indeksy w przestrzeni kluczy:
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
-
[Tylko monetyzacja] Odbuduj indeksy w przestrzeni kluczy:
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
-
[Tylko monetyzacja] Odbuduj indeksy w przestrzeni kluczy:
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
Weryfikacja
- Sprawdź, czy zmiana strategii kompaktowania w schemacie została wprowadzona, wykonując instrukcje podane w Dodatku 1.
- Sprawdź, czy kompaktowanie zostało przeprowadzone prawidłowo i czy dane zostały skompresowane po zmianie strategii:
- W każdym węźle Cassandra uruchom to polecenie nodetool, aby sprawdzić, czy wszystkie kompaktowania zostały zakończone i czy nie ma żadnych oczekujących:
nodetool compactionstats
- Po sprawdzeniu za pomocą powyższego polecenia, czy nie ma oczekujących kompaktowań, sprawdź sygnaturę czasową ostatniej modyfikacji plików danych (w lokalizacji
/opt/apigee/data/apigee-cassandra/data/), aby upewnić się, że jest ona późniejsza niż sygnatura czasowa wykonania polecenia CQL zmiany strategii kompaktowania.
- W każdym węźle Cassandra uruchom to polecenie nodetool, aby sprawdzić, czy wszystkie kompaktowania zostały zakończone i czy nie ma żadnych oczekujących:
Przywróć
Jeśli musisz przywrócić poprzednią wersję, możesz wybrać jedną z tych opcji:
Opcja 1. Cofnij zmianę
Przywróć strategię kompaktowania do pierwotnej strategii.
W wierszu poleceń CQL uruchom podobne polecenia ALTER TABLE, które zostały uruchomione wcześniej w celu zmiany strategii kompaktowania.
Jeśli podczas zmiany strategii kompaktowania na LeveledCompactionStrategy indeksy zostały już odbudowane, musisz je odbudować ponownie. Aby odbudować wszystkie indeksy, wykonaj te same czynności co wcześniej. Jeśli wcześniej nie odbudowano indeksów, nie trzeba ich odbudowywać podczas przywracania.
Opcja 2. Pełne przywracanie danych z kopii zapasowej
Przywróć dane z kopii zapasowej we wszystkich przestrzeniach kluczy:
Postępuj zgodnie z instrukcjami przywracania opisanymi w artykule Przywracanie z kopii zapasowej.
Dodatek 1. Sprawdź strategię kompaktowania
Strategie kompaktowania są ustawiane na poziomie tabeli w systemie Cassandra. Aby sprawdzić strategię kompaktowania każdej tabeli, możesz użyć tych zapytań.
Polecenia CQL możesz uruchamiać w wierszu poleceń CQL. Aby wywołać wiersz poleceń CQL:
/opt/apigee/apigee-cassandra/bin/cqlsh `hostname -i`
Zobaczysz odpowiedź podobną do tej:
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>
Bieżącą strategię kompaktowania możesz określić w ten sposób:
Każdy wiersz w danych wyjściowych dotyczy tabeli w przestrzeni kluczy. W przypadku każdego wiersza kolumna compaction wskazuje strategię kompaktowania używaną przez tabelę.
- Jeśli strategia kompaktowania jest ustawiona na SizeTieredCompactionStrategy, kolumna compaction w poniższych zapytaniach będzie wyglądać tak:
- Jeśli strategia kompaktowania jest ustawiona na LeveledCompactionStrategy, kolumna compaction w poniższych zapytaniach będzie wyglądać tak:
{'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}{'class': 'org.apache.cassandra.db.compaction.LeveledCompactionStrategy'}Aby określić strategię kompaktowania każdej tabeli w danej przestrzeni kluczy, możesz uruchomić te zapytania:
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';