Apigee は、Cassandra データベースを使用して、プロキシ、キャッシュ、トークンのデータなど、ほとんどのデータを保存します。圧縮は、データベースに保存されるデータのサイズを削減するための標準的なプロセスです。これは、データベースを効率的に実行するために不可欠です。Cassandra は、コンパクションのさまざまな戦略をサポートしています。Apigee では、すべての Edge for Private Cloud のお客様が、すべての列ファミリーに対して、デフォルトの戦略 SizeTieredCompactionStrategy ではなく、戦略 LeveledCompactionStrategy を使用して Cassandra クラスタを運用することをおすすめします。LeveledCompactionStrategy は、SizedTieredCompactionStrategy よりもパフォーマンス、ディスク使用率、圧縮効率が向上し、必要な空き容量が少なくなります。
Apigee 4.51.00 以降を新規にインストールすると、Cassandra が LeveledCompactionStrategy で自動的に設定されます。ただし、古いバージョンの Apigee を使用している場合や、古いバージョンから Apigee 4.51.00 にアップグレードした場合は、SizeTieredCompactionStrategy で Cassandra を使用している可能性があります。お使いの Cassandra のバージョンで使用されている圧縮戦略を確認するには、圧縮戦略を確認するをご覧ください。
このページでは、コンパクション戦略を LeveledCompactionStrategy に変更する方法について説明します。
準備
既存のコンパクション戦略を確認する
列ファミリーの既存のコンパクション戦略を確認するには、コンパクション戦略を確認するの手順に沿って操作します。圧縮戦略が既にLeveledCompactionStrategyになっている場合は、このページに記載されている残りの手順に従う必要はありません。
バックアップ
コンパクション戦略を変更すると、C* ノードで完全なコンパクション サイクルがトリガーされるため、コンパクションの負荷とアプリケーション トラフィックの同時発生により、レイテンシが発生する可能性があります。バックアップから Cassandra ノードを復元するには、この変更のロールバックが必要になる場合があります。圧縮戦略を変更する前にデータをバックアップする方法については、バックアップ方法をご覧ください。
圧縮スループット
コンパクション戦略を LeveledCompactionStrategy に変更すると、コンパクションが長時間実行されることがあります。データ圧縮のサイズによって、実行時間が異なる場合があります。圧縮サイクル中に、Cassandra がより多くのシステム リソースを使用する可能性があります。コンパクションが大量のシステム リソースを消費して API ランタイム リクエストを中断しないように、コンパクション スループットの上限を設定することをおすすめします。
各ノードで次の nodetool コマンドを実行して、すべての C* ノードでコンパクション スループットが最大 128 MB になるように設定します。
nodetool setcompactionthroughput 128
コンパクション用の VM のサイズ設定
この変更を実行する前に、C* ノードに十分な CPU/メモリリソースがあることを確認してください。この変更を実行する前に、CPU 負荷が 25% を超える C* ノードがないことを確認してください。
コンパクション戦略の変更後は、完全なコンパクション サイクルが実行されることが予想されるため、トラフィックが少ない期間にコンパクション戦略を変更することをおすすめします。
スタッガード ラン
特に大規模な Cassandra クラスタを運用している場合は、各ノードでインデックスを 1 つずつ再構築する必要があるため、1 日ですべてのノードの変更を完了できないことがあります。1 つのスキーマまたは 1 つの列ファミリー(テーブル)の圧縮戦略を一度に変更できます。これを行うには、列ファミリーを変更して圧縮戦略を変更し、すべてのノードのテーブルのすべてのインデックス(存在する場合)を再構築します。次に、テーブルまたはキースペースごとに上記の手順を繰り返します。1 つのテーブルまたは 1 つのキースペースに対するこのような実行は、複数の日にわたって実行されるように分割できます。
たとえば、kms スキーマの oauth_20_access_tokens 列ファミリーのコンパクション戦略を変更するには、次の操作を行います。
- テーブルを変更して、コンパクション戦略を変更します。
ALTER TABLE kms.oauth_20_access_tokens WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - このテーブルのすべてのインデックスを再構築します。
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
コンパクション戦略の変更
大まかに言うと、コンパクション戦略の変更は 2 段階のプロセスです。
- すべてのテーブルの圧縮戦略を変更する。
- 各ノードのすべてのインデックスを 1 つずつ再構築します。
テーブルを変更して新しい圧縮戦略を設定する
いずれかの Cassandra ノードで次の Cassandra クエリ言語(CQL)コマンドを実行し、一度に 1 つのキースペースの戦略を変更します。CQL は cql プロンプトで実行できます。cql プロンプトを呼び出すには:
/opt/apigee/apigee-cassandra/bin/cqlsh `hostname -i`
次のようなレスポンスが表示されます。
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>
次の CQL を実行して、圧縮戦略を変更します。
- キースペース
kmsのコンパクション戦略を変更する CQL: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'}; - キースペース
user_settingsのコンパクション戦略を変更する CQL:ALTER TABLE user_settings.user_settings WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - キースペース
keyvaluemapのコンパクション戦略を変更する CQL:ALTER TABLE keyvaluemap.keyvaluemaps_r21 WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - キースペース
devconnectの圧縮戦略を変更する CQL: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のコンパクション戦略を変更する CQL: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'}; - キースペース
cacheのコンパクション戦略を変更する CQL:ALTER TABLE cache.cache_entries WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE cache.cache_sequence_id_r24 WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - キースペース
ax_custom_report_modelのコンパクション戦略を変更する CQL: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'}; - キースペース
authのコンパクション戦略を変更する CQL:ALTER TABLE auth.totp WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - キースペース
auditのコンパクション戦略を変更する CQL:ALTER TABLE audit.audits WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE audit.audits_ref WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - キースペース
apprepoのコンパクション戦略を変更する CQL: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'}; - キースペース
apimodelのコンパクション戦略を変更する CQL: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'}; - キースペース
identityzoneのコンパクション戦略を変更する CQL:ALTER TABLE identityzone.IdentityZones WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE identityzone.OrgToIdentityZone WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - キースペース
dekのコンパクション戦略を変更する CQL:ALTER TABLE dek.keys WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - キースペース
analyticsのコンパクション戦略を変更する CQL: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'};
インデックスを再構築する
このステップは、コンパクション戦略の変更後に実行する必要があります。次の nodetool コマンドを各 Cassandra ノードで 1 つずつ実行します。
次の nodetool コマンドを実行して、インデックスを再構築します。
- キースペース
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
- キースペース
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
- キースペース
cacheのインデックスを再構築します。nodetool rebuild_index cache cache_entries cache_entries_cache_name_idx
- キースペース
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
- キースペース
apprepoのインデックスを再構築します。nodetool rebuild_index apprepo environments environments_organization_name_idx
- キースペース
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
- キースペース
dekのインデックスを再構築します。nodetool rebuild_index dek keys usecase_index
確認
- コンパクション戦略を確認するの手順に沿って、スキーマのコンパクション戦略の変更が有効になっていることを確認します。
- コンパクションが正常に実行され、戦略の変更後にデータが圧縮されたことを確認します。
- 各 Cassandra ノードで、次の
nodetoolコマンドを実行して、すべてのコンパクションが完了し、保留中のものがないことを確認します。nodetool compactionstats
- 上記のコマンドを使用して、保留中のコンパクションがないことを確認したら、データファイルの最終更新タイムスタンプ(/opt/apigee/data/apigee-cassandra/data/)が、コンパクション戦略変更 CQL が実行されたタイムスタンプより後であることを確認します。
- 各 Cassandra ノードで、次の
ロールバック
ロールバックが必要な場合は、次のいずれかの方法で行うことができます。
オプション 1: 変更を元に戻す
コンパクション戦略を SizeTieredCompactionStrategy にロールバックします。
任意の 1 つの Cassandra ノードで次の CQL を実行し、一度に 1 つのキースペースの戦略を変更します。CQL は cql プロンプトで実行できます。cql プロンプトを呼び出すには:
/opt/apigee/apigee-cassandra/bin/cqlsh `hostname -i`
次のようなレスポンスが表示されます。
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>
次の CQL を実行して、圧縮戦略を変更します。
- キースペース
kmsのコンパクション戦略を変更する CQL: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'}; - キースペース
user_settingsのコンパクション戦略を変更する CQL:ALTER TABLE user_settings.user_settings WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; - キースペース
keyvaluemapのコンパクション戦略を変更する CQL:ALTER TABLE keyvaluemap.keyvaluemaps_r21 WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; - キースペース
devconnectのコンパクション戦略を変更する CQL: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'}; - キースペース
counterのコンパクション戦略を変更する CQL: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'}; -
キースペース
cacheのコンパクション戦略を変更する CQL:ALTER TABLE cache.cache_entries WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE cache.cache_sequence_id_r24 WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; - キースペース
ax_custom_report_modelのコンパクション戦略を変更する CQL: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'}; - キースペース
authのコンパクション戦略を変更する CQL:ALTER TABLE auth.totp WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; - キースペース
auditのコンパクション戦略を変更する CQL:ALTER TABLE audit.audits WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE audit.audits_ref WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; - キースペース
apprepoのコンパクション戦略を変更する CQL: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'}; - キースペース
apimodelのコンパクション戦略を変更する CQL: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'}; - キースペース
identityzoneのコンパクション戦略を変更する CQL:ALTER TABLE identityzone.IdentityZones WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; ALTER TABLE identityzone.OrgToIdentityZone WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; - キースペース
dekのコンパクション戦略を変更する CQL:ALTER TABLE dek.keys WITH compaction = {'class' : 'SizeTieredCompactionStrategy'}; - キースペース
analyticsのコンパクション戦略を変更する CQL: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'};
すべての列ファミリーが変更された後、コンパクション戦略を LeveledCompactionStrategy に変更しながらインデックスをすでに再構築している場合は、インデックスを再度再構築する必要があります。すべてのインデックスを再構築する場合と同じ手順を行います。以前にインデックスを再構築していない場合は、ロールバック中にインデックスを再構築する必要はありません。
オプション 2 - バックアップからデータを完全に復元する
完全なデータ復元を行うには、バックアップから復元するの手順をご覧ください。
圧縮戦略を確認する
Cassandra では、コンパクション戦略は列ファミリー(テーブル)レベルで設定されます。以下の CQL クエリを使用して、各列ファミリーのコンパクション戦略を確認できます。
CQL は cql プロンプトで実行できます。cql プロンプトを呼び出すには:
/opt/apigee/apigee-cassandra/bin/cqlsh `hostname -i`
次のようなレスポンスが表示されます。
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>
現在の圧縮戦略は、次のように確認できます。
- 圧縮戦略が
SizeTieredCompactionStrategyに設定されている場合、以下のクエリの出力はorg.apache.cassandra.db.compaction.SizeTieredCompactionStrategyになります。 - 圧縮戦略が
LeveledCompactionStrategyに設定されている場合、以下のクエリの出力はorg.apache.cassandra.db.compaction.LeveledCompactionStrategyになります。
次の CQL を実行して、圧縮戦略を確認します。
- キースペース
kmsのコンパクション戦略を検証する CQL: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';
- キースペース
user_settingsのコンパクション戦略を検証する CQL:SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'user_settings' and columnfamily_name = 'user_settings';
- キースペース
keyvaluemapのコンパクション戦略を検証する CQL:SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'keyvaluemap' and columnfamily_name = 'keyvaluemaps_r21';
- キースペース
devconnectのコンパクション戦略を検証する CQL: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';
- キースペース
counterのコンパクション戦略を検証する CQL: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';
- キースペース
cacheのコンパクション戦略を検証する CQL: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';
- キースペース
ax_custom_report_modelのコンパクション戦略を検証する CQL: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';
- キースペース
authのコンパクション戦略を検証する CQL:SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'auth' and columnfamily_name = 'totp';
- キースペース
auditのコンパクション戦略を検証する CQL: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';
- キースペース
apprepoのコンパクション戦略を検証する CQL: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';
- キースペース
apimodelのコンパクション戦略を検証する CQL: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';
- キースペース
identityzoneのコンパクション戦略を検証する CQL: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';
- キースペース
dekのコンパクション戦略を検証する CQL:SELECT compaction_strategy_class from system.schema_columnfamilies where keyspace_name = 'dek' and columnfamily_name = 'keys';
- キースペース
analyticsのコンパクション戦略を検証する CQL: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';