Apigee używa baz 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 standardowy proces zmniejszania rozmiaru danych przechowywanych w bazach danych, który jest niezbędny do utrzymania wydajnego działania baz danych. Cassandra obsługuje różne strategie kompaktowania. Apigee zaleca wszystkim klientom Edge dla chmury prywatnej, aby w przypadku wszystkich grup kolumn obsługiwali klastry Cassandra za pomocą strategii LeveledCompactionStrategy, a nie domyślnej strategii SizeTieredCompactionStrategy. LeveledCompactionStrategy zapewnia lepszą wydajność, lepsze wykorzystanie dysku, wydajniejsze kompaktowanie i wymaga mniej wolnego miejsca niż SizedTieredCompactionStrategy.
Wszystkie nowe instalacje Apigee w wersji 4.51.00 lub nowszej będą automatycznie konfigurować Cassandrę z LeveledCompactionStrategy. Jeśli jednak używasz starszej wersji Apigee lub masz uaktualnioną wersję Apigee 4.51.00 ze starszej wersji, Twoja wersja może nadal używać Cassandra z SizeTieredCompactionStrategy.
Aby dowiedzieć się, która strategia kompaktowania jest używana w Twojej wersji Cassandra, zapoznaj się z sekcją Sprawdzanie strategii kompaktowania.
Na tej stronie dowiesz się, jak zmienić strategię kompaktowania na LeveledCompactionStrategy.
Przygotowanie
Sprawdzanie istniejącej strategii kompaktowania
Aby sprawdzić istniejącą strategię kompaktowania w rodzinach kolumn, postępuj zgodnie z instrukcjami podanymi w sekcji Sprawdzanie strategii kompaktowania. Jeśli strategia kompaktowania to już LeveledCompactionStrategy, nie musisz wykonywać pozostałych instrukcji na tej stronie.
Kopia zapasowa
Zmiana strategii kompaktowania powoduje uruchomienie pełnego cyklu kompaktowania w węzłach C*, co może powodować pewne opóźnienia ze względu na obciążenie związane z kompaktowaniem i jednoczesnym ruchem aplikacji. Aby przywrócić węzły Cassandra z kopii zapasowych, może być konieczne wycofanie tej zmiany. Aby dowiedzieć się, jak utworzyć kopię zapasową danych przed zmianą strategii kompaktowania, przeczytaj artykuł How to backup (Jak utworzyć kopię zapasową).
Przepustowość kompaktowania
Po zmianie strategii kompaktowania na LeveledCompactionStrategy kompaktowanie może trwać przez dłuższy czas. Czas działania może się różnić w zależności od rozmiaru kompaktowania danych. Podczas cyklu kompaktowania Cassandra może zużywać więcej zasobów systemowych. Aby zagęszczanie nie zajmowało dużo zasobów systemowych, co mogłoby zakłócać żądania środowiska wykonawczego interfejsu API, zalecamy ustawienie limitów przepustowości zagęszczania.
Uruchom to polecenie nodetool na każdym węźle, aby ustawić maksymalną przepustowość kompaktowania na 128 MB na wszystkich węzłach C*:
nodetool setcompactionthroughput 128
Dobieranie rozmiaru maszyn wirtualnych na potrzeby kompaktowania
Przed wprowadzeniem tej zmiany upewnij się, że węzły C* mają wystarczającą ilość zasobów procesora i pamięci. Przed wprowadzeniem tej zmiany upewnij się, że żaden węzeł C* nie działa przy obciążeniu procesora przekraczającym 25%.
Po zmianie strategii kompaktowania powinien zostać uruchomiony pełny cykl kompaktowania, dlatego zaleca się zmianę strategii kompaktowania w okresach niskiego ruchu.
Przesunięcie
Może się okazać, że nie uda Ci się zmienić wszystkich węzłów w ciągu jednego dnia, zwłaszcza jeśli masz duże klastry Cassandra, ponieważ indeksy muszą być odbudowywane na każdym węźle po kolei. Możesz zmienić strategię kompaktowania jednego schematu lub jednej grupy kolumn (tabeli) naraz. W tym celu zmień grupę kolumn, aby zmienić strategię kompaktowania, a następnie ponownie utwórz wszystkie indeksy w tabeli (jeśli istnieją) we wszystkich węzłach. Następnie powtórz powyższą procedurę dla każdej tabeli lub przestrzeni kluczy. Takie uruchomienia w przypadku jednej tabeli lub jednej przestrzeni kluczy można podzielić na różne dni.
Aby na przykład zmienić strategię kompaktowania grupy kolumn oauth_20_access_tokens w schemacie kms, możesz wykonać te czynności:
- Zmień tabelę, aby zmienić strategię kompaktowania:
ALTER TABLE kms.oauth_20_access_tokens WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - Przebuduj wszystkie indeksy tylko 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
Ogólnie rzecz biorąc, zmiana strategii kompaktowania jest procesem dwuetapowym:
- Zmień strategię kompaktowania każdej tabeli.
- Przebuduj wszystkie indeksy w każdym węźle, jeden po drugim.
Zmiana tabeli w celu ustawienia nowej strategii kompaktowania
Uruchom te polecenia Cassandra Query Language (CQL) na dowolnym węźle Cassandra, zmieniając strategię dla jednej przestrzeni kluczy naraz. Zapytania CQL możesz uruchamiać w wierszu poleceń cql. Aby wywołać prompta cql:
/opt/apigee/apigee-cassandra/bin/cqlsh `hostname -i`
Zobaczysz odpowiedź podobną do tej:
Connected to apigee at XX.XX.XX.XX:9042. [cqlsh 5.0.1 | Cassandra 2.1.16 | CQL spec 3.2.1 | Native protocol v3] Use HELP for help. cqlsh>
Aby zmienić strategię kompaktowania, uruchom te polecenia CQL:
- Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
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'}; - Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
user_settings:ALTER TABLE user_settings.user_settings WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
keyvaluemap:ALTER TABLE keyvaluemap.keyvaluemaps_r21 WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
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'}; - Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
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'}; - Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
cache:ALTER 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 dla przestrzeni kluczy
ax_custom_report_model:ALTER TABLE ax_custom_report_model.report_description WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE ax_custom_report_model.report_id_lookup WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE ax_custom_report_model.org_metadata WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE ax_custom_report_model.org_report_lookup WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE ax_custom_report_model.report_created_view WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE ax_custom_report_model.report_viewed_view WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
auth:ALTER TABLE auth.totp WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
audit:ALTER TABLE audit.audits WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE audit.audits_ref WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
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'}; - Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
apimodel:ALTER TABLE apimodel.apis WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE apimodel.apis_revision WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE apimodel.resource WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE apimodel.method WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE apimodel.revision_counters WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE apimodel.template_counters WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE apimodel.template WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE apimodel.credentials WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE apimodel.credentialsv2 WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE apimodel.schemas WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE apimodel.security WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE apimodel.template_auth WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
identityzone:ALTER TABLE identityzone.IdentityZones WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE identityzone.OrgToIdentityZone WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
dek:ALTER TABLE dek.keys WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
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'};
Przebuduj indeksy
Ten krok należy wykonać po zmianie strategii kompaktowania. Uruchom kolejno te polecenia nodetool na każdym węźle Cassandra.
Aby ponownie utworzyć indeksy, uruchom te polecenia nodetool:
- Przebuduj indeksy dla przestrzeni kluczy
kms:nodetool rebuild_index kms maps maps_organization_name_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 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 api_products api_products_organization_name_idx nodetool rebuild_index kms app_end_user app_end_user_app_id_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 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_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_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_verifiers oauth_10_verifiers_organization_name_idx nodetool rebuild_index kms oauth_10_verifiers oauth_10_verifiers_request_token_idx
- Przebuduj indeksy dla przestrzeni kluczy
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
- Przebuduj indeksy dla przestrzeni kluczy
cache:nodetool rebuild_index cache cache_entries cache_entries_cache_name_idx
- Przebuduj indeksy dla przestrzeni kluczy
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
- Przebuduj indeksy dla przestrzeni kluczy
apprepo:nodetool rebuild_index apprepo environments environments_organization_name_idx
- Przebuduj indeksy dla przestrzeni kluczy
apimodel:nodetool rebuild_index apimodel apis a_name nodetool rebuild_index apimodel apis a_org_name nodetool rebuild_index apimodel apis_revision ar_a_name nodetool rebuild_index apimodel apis_revision ar_a_uuid nodetool rebuild_index apimodel apis_revision ar_base_url nodetool rebuild_index apimodel apis_revision ar_is_active nodetool rebuild_index apimodel apis_revision ar_is_latest nodetool rebuild_index apimodel apis_revision ar_org_name nodetool rebuild_index apimodel apis_revision ar_rel_ver nodetool rebuild_index apimodel apis_revision ar_rev_num nodetool rebuild_index apimodel resource r_a_name nodetool rebuild_index apimodel resource r_api_uuid nodetool rebuild_index apimodel resource r_ar_uuid nodetool rebuild_index apimodel resource r_base_url nodetool rebuild_index apimodel resource r_name nodetool rebuild_index apimodel resource r_org_name nodetool rebuild_index apimodel resource r_res_path nodetool rebuild_index apimodel resource r_rev_num nodetool rebuild_index apimodel method m_a_name nodetool rebuild_index apimodel method m_api_uuid nodetool rebuild_index apimodel method m_ar_uuid nodetool rebuild_index apimodel method m_base_url nodetool rebuild_index apimodel method m_name nodetool rebuild_index apimodel method m_org_name nodetool rebuild_index apimodel method m_r_name nodetool rebuild_index apimodel method m_r_uuid nodetool rebuild_index apimodel method m_res_path nodetool rebuild_index apimodel method m_rev_num nodetool rebuild_index apimodel method m_verb nodetool rebuild_index apimodel template t_a_name nodetool rebuild_index apimodel template t_a_uuid nodetool rebuild_index apimodel template t_entity nodetool rebuild_index apimodel template t_name nodetool rebuild_index apimodel template t_org_name nodetool rebuild_index apimodel schemas s_api_uuid nodetool rebuild_index apimodel schemas s_ar_uuid nodetool rebuild_index apimodel security sa_api_uuid nodetool rebuild_index apimodel security sa_ar_uuid nodetool rebuild_index apimodel template_auth au_api_uuid
- Przebuduj indeksy dla przestrzeni kluczy
dek:nodetool rebuild_index dek keys usecase_index
Weryfikacja
- Sprawdź, czy zmiana strategii kompaktowania w schemacie została wprowadzona, postępując zgodnie z instrukcjami w sekcji Sprawdzanie strategii kompaktowania.
- Sprawdź, czy po zmianie strategii kompaktowanie zostało przeprowadzone pomyślnie i dane zostały skompaktowane:
- Na każdym węźle Cassandra uruchom to polecenie
nodetool, aby sprawdzić, czy wszystkie kompaktowania zostały zakończone i nie ma żadnych oczekujących:nodetool compactionstats
- Po sprawdzeniu za pomocą powyższego polecenia, że nie ma oczekujących kompaktowań, sprawdź, czy sygnatura czasowa ostatniej modyfikacji plików danych (w katalogu /opt/apigee/data/apigee-cassandra/data/) jest późniejsza niż sygnatura czasowa wykonania polecenia CQL zmiany strategii kompaktowania.
- Na każdym węźle Cassandra uruchom to polecenie
Wycofaj zmiany
Jeśli chcesz przywrócić poprzednią wersję, możesz skorzystać z jednej z tych opcji:
Opcja 1. Cofnij zmianę
Przywróć strategię kompaktowania do wersji SizeTieredCompactionStrategy.
Uruchom te polecenia CQL na dowolnym węźle Cassandra, zmieniając strategię dla jednej przestrzeni kluczy naraz. Zapytania CQL możesz uruchamiać w wierszu poleceń cql. Aby wywołać prompta cql:
/opt/apigee/apigee-cassandra/bin/cqlsh `hostname -i`
Zobaczysz odpowiedź podobną do tej:
Connected to apigee at XX.XX.XX.XX:9042. [cqlsh 5.0.1 | Cassandra 2.1.16 | CQL spec 3.2.1 | Native protocol v3] Use HELP for help. cqlsh>
Aby zmienić strategię kompaktowania, uruchom te polecenia CQL:
- Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
kms:ALTER TABLE kms.organizations WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE kms.maps WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE kms.apps WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE kms.app_credentials WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE kms.api_products WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE kms.apiproducts_appslist WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE kms.api_resources WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE kms.app_end_user WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE kms.oauth_20_authorization_codes WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE kms.oauth_20_access_tokens WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE kms.oauth_10_request_tokens WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE kms.oauth_10_access_tokens WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE kms.oauth_10_verifiers WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE kms.app_enduser_tokens WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
user_settings:ALTER TABLE user_settings.user_settings WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
keyvaluemap:ALTER TABLE keyvaluemap.keyvaluemaps_r21 WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
devconnect:ALTER TABLE devconnect.developers WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE devconnect.companies WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE devconnect.company_developers WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
counter:ALTER TABLE counter.counters_current_version WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE counter.counters_with_expiry WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE counter.counters WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE counter.key_timestamp_count WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE counter.timestamp_key WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE counter.period_timestamp WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE counter.gateway_quota WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; -
Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
cache:ALTER TABLE cache.cache_entries WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE cache.cache_sequence_id_r24 WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
ax_custom_report_model:ALTER TABLE ax_custom_report_model.report_description WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE ax_custom_report_model.report_id_lookup WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE ax_custom_report_model.org_metadata WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE ax_custom_report_model.org_report_lookup WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE ax_custom_report_model.report_created_view WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE ax_custom_report_model.report_viewed_view WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
auth:ALTER TABLE auth.totp WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
audit:ALTER TABLE audit.audits WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE audit.audits_ref WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
apprepo:ALTER TABLE apprepo.organizations WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE apprepo.environments WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE apprepo.apiproxies WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE apprepo.apiproxy_revisions WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE apprepo.api_proxy_revisions_r21 WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
apimodel:ALTER TABLE apimodel.apis WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE apimodel.apis_revision WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE apimodel.resource WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE apimodel.method WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE apimodel.revision_counters WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE apimodel.template_counters WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE apimodel.template WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE apimodel.credentials WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE apimodel.credentialsv2 WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE apimodel.schemas WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE apimodel.security WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE apimodel.template_auth WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
identityzone:ALTER TABLE identityzone.IdentityZones WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE identityzone.OrgToIdentityZone WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
dek:ALTER TABLE dek.keys WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; - Polecenia CQL do zmiany strategii kompaktowania dla przestrzeni kluczy
analytics:ALTER TABLE analytics.custom_aggregates_defn WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE analytics.custom_rules_defn WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE analytics.custom_aggregates_defn_updates WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE analytics.custom_rules_defn_updates WITH compaction = {'class' : 'SizeTieredCompactionStrategy'};
Jeśli po zmianie strategii kompaktowania na LeveledCompactionStrategy indeksy zostały już przebudowane, po zmianie wszystkich grup kolumn musisz ponownie przebudować indeksy. Wykonaj te same czynności co wcześniej, aby ponownie utworzyć wszystkie indeksy. Jeśli indeksy nie zostały wcześniej przebudowane, nie musisz ich przebudowywać podczas przywracania.
Opcja 2. Pełne przywracanie danych z kopii zapasowej
Aby przeprowadzić pełne przywracanie danych, postępuj zgodnie z instrukcjami w sekcji Przywracanie z kopii zapasowej.
Sprawdź strategię kompaktowania
Strategie kompaktowania są ustawiane w Cassandra na poziomie grupy kolumn (tabeli). Aby sprawdzić strategię kompaktowania dla każdej grupy kolumn, możesz użyć poniższych zapytań CQL.
Zapytania CQL możesz uruchamiać w wierszu poleceń cql.
Aby wywołać prompta cql:
/opt/apigee/apigee-cassandra/bin/cqlsh `hostname -i`
Zobaczysz odpowiedź podobną do tej:
Connected to apigee at XX.XX.XX.XX:9042. [cqlsh 5.0.1 | Cassandra 2.1.16 | CQL spec 3.2.1 | Native protocol v3] Use HELP for help. cqlsh>
Bieżącą strategię kompaktowania możesz określić w ten sposób:
- Jeśli strategia kompaktowania jest ustawiona na
SizeTieredCompactionStrategy, wynik poniższych zapytań będzie wynosićorg.apache.cassandra.db.compaction.SizeTieredCompactionStrategy. - Jeśli strategia kompaktowania jest ustawiona na
LeveledCompactionStrategy, wynik poniższych zapytań będzie wynosićorg.apache.cassandra.db.compaction.LeveledCompactionStrategy.
Aby sprawdzić strategię kompaktowania, uruchom te polecenia CQL:
- Polecenia CQL do weryfikacji strategii kompaktowania dla przestrzeni kluczy
kms:SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name ='kms' and columnfamily_name = 'organizations'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name ='kms' and columnfamily_name = 'maps'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name ='kms' and columnfamily_name = 'apps'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name ='kms' and columnfamily_name = 'app_credentials'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name ='kms' and columnfamily_name = 'api_products'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name ='kms' and columnfamily_name = 'apiproducts_appslist'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name ='kms' and columnfamily_name = 'api_resources'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name ='kms' and columnfamily_name = 'app_end_user'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name ='kms' and columnfamily_name = 'oauth_20_authorization_codes'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name ='kms' and columnfamily_name = 'oauth_20_access_tokens'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name ='kms' and columnfamily_name = 'oauth_10_request_tokens'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name ='kms' and columnfamily_name = 'oauth_10_access_tokens'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name ='kms' and columnfamily_name = 'oauth_10_verifiers'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name ='kms' and columnfamily_name = 'app_enduser_tokens';
- Polecenia CQL do weryfikacji strategii kompaktowania dla przestrzeni kluczy
user_settings:SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'user_settings' and columnfamily_name = 'user_settings';
- Polecenia CQL do weryfikacji strategii kompaktowania dla przestrzeni kluczy
keyvaluemap:SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'keyvaluemap' and columnfamily_name = 'keyvaluemaps_r21';
- Polecenia CQL do weryfikacji strategii kompaktowania dla przestrzeni kluczy
devconnect:SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'devconnect' and columnfamily_name = 'developers'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'devconnect' and columnfamily_name = 'companies'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'devconnect' and columnfamily_name = 'company_developers';
- Polecenia CQL do weryfikacji strategii kompaktowania dla przestrzeni kluczy
counter:SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'counter' and columnfamily_name = 'counters_current_version'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'counter' and columnfamily_name = 'counters_with_expiry'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'counter' and columnfamily_name = 'counters'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'counter' and columnfamily_name = 'key_timestamp_count'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'counter' and columnfamily_name = 'timestamp_key'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'counter' and columnfamily_name = 'period_timestamp'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'counter' and columnfamily_name = 'gateway_quota';
- Polecenia CQL do weryfikacji strategii kompaktowania dla przestrzeni kluczy
cache:SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'cache' and columnfamily_name = 'cache_entries'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'cache' and columnfamily_name = 'cache_sequence_id_r24';
- Polecenia CQL do weryfikacji strategii kompaktowania dla przestrzeni kluczy
ax_custom_report_model:SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'ax_custom_report_model' and columnfamily_name = 'report_description'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'ax_custom_report_model' and columnfamily_name = 'report_id_lookup'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'ax_custom_report_model' and columnfamily_name = 'org_metadata'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'ax_custom_report_model' and columnfamily_name = 'org_report_lookup'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'ax_custom_report_model' and columnfamily_name = 'report_created_view'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'ax_custom_report_model' and columnfamily_name = 'report_viewed_view';
- Polecenia CQL do weryfikacji strategii kompaktowania dla przestrzeni kluczy
auth:SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'auth' and columnfamily_name = 'totp';
- Polecenia CQL do weryfikacji strategii kompaktowania dla przestrzeni kluczy
audit:SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'audit' and columnfamily_name = 'audits'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'audit' and columnfamily_name = 'audits_ref';
- Polecenia CQL do weryfikacji strategii kompaktowania dla przestrzeni kluczy
apprepo:SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'apprepo' and columnfamily_name = 'organizations'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'apprepo' and columnfamily_name = 'environments'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'apprepo' and columnfamily_name = 'apiproxies'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'apprepo' and columnfamily_name = 'apiproxy_revisions'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'apprepo' and columnfamily_name = 'api_proxy_revisions_r21';
- Polecenia CQL do weryfikacji strategii kompaktowania dla przestrzeni kluczy
apimodel:SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'apimodel' and columnfamily_name = 'apis'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'apimodel' and columnfamily_name = 'apis_revision'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'apimodel' and columnfamily_name = 'resource'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'apimodel' and columnfamily_name = 'method'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'apimodel' and columnfamily_name = 'revision_counters'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'apimodel' and columnfamily_name = 'template_counters'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'apimodel' and columnfamily_name = 'template'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'apimodel' and columnfamily_name = 'credentials'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'apimodel' and columnfamily_name = 'credentialsv2'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'apimodel' and columnfamily_name = 'schemas'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'apimodel' and columnfamily_name = 'security'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'apimodel' and columnfamily_name = 'template_auth';
- Polecenia CQL do weryfikacji strategii kompaktowania dla przestrzeni kluczy
identityzone:SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'identityzone' and columnfamily_name = 'identityzones'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'identityzone' and columnfamily_name = 'orgtoidentityzone';
- Polecenia CQL do weryfikacji strategii kompaktowania dla przestrzeni kluczy
dek:SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'dek' and columnfamily_name = 'keys';
- Polecenia CQL do weryfikacji strategii kompaktowania dla przestrzeni kluczy
analytics:SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'analytics' and columnfamily_name = 'custom_aggregates_defn'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'analytics' and columnfamily_name = 'custom_rules_defn'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'analytics' and columnfamily_name = 'custom_aggregates_defn_updates'; SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'analytics' and columnfamily_name = 'custom_rules_defn_updates';