Thay đổi chiến lược nén Cassandra

Apigee sử dụng cơ sở dữ liệu Cassandra để lưu trữ hầu hết dữ liệu, bao gồm cả dữ liệu cho proxy, bộ nhớ đệm và mã thông báo. Nén là một quy trình quan trọng để giảm kích thước của dữ liệu được lưu trữ trong cơ sở dữ liệu, cần thiết để duy trì các hoạt động hiệu quả của cơ sở dữ liệu. Cassandra hỗ trợ nhiều chiến lược nén. Apigee khuyến nghị tất cả khách hàng sử dụng Edge cho Private Cloud vận hành các cụm Cassandra bằng LeveledCompactionStrategy thay vì SizeTieredCompactionStrategy mặc định cho tất cả các bảng. LeveledCompactionStrategy mang lại hiệu suất tốt hơn, cải thiện mức sử dụng ổ đĩa, nén hiệu quả hơn và yêu cầu ít dung lượng trống hơn so với SizeTieredCompactionStrategy.

Tất cả các bản cài đặt mới của Edge cho Đám mây riêng tư 4.52.02 trở lên đều tự động định cấu hình Cassandra bằng LeveledCompactionStrategy. Tuy nhiên, nếu bạn đã nâng cấp lên Edge cho Đám mây riêng tư 4.54.00 từ một phiên bản cũ hơn, thì bản cài đặt của bạn vẫn có thể sử dụng Cassandra với SizeTieredCompactionStrategy.

Mặc dù bạn không nên thay đổi chiến lược nén thành bất kỳ chiến lược nào khác ngoài LeveledCompactionStrategy, nhưng tài liệu này trình bày cách thực hiện thay đổi nếu cần và cung cấp hướng dẫn kiểm tra chiến lược nén hiện tại của bạn. Nếu bạn thay đổi chiến lược nén thành một lựa chọn không được đề xuất, thì các bản nâng cấp phần mềm Cassandra trong tương lai có thể ghi đè các thay đổi của bạn. Bạn nên xác minh chiến lược nén sau mỗi lần nâng cấp nếu đang sử dụng phương pháp không chuẩn.

Chuẩn bị

Điều kiện tiên quyết

Trong Edge cho Đám mây riêng tư 4.54.00, Cassandra 5.x yêu cầu JDK 17 (Java 17). Trước khi chạy lệnh nodetool hoặc cqlsh trên một nút Cassandra, hãy đảm bảo rằng Java 17 được định cấu hình làm phiên bản Java mặc định (ví dụ: bằng cách chạy sudo alternatives --set java JAVA_17_PATH/bin/java hoặc đặt JAVA_HOME thành bản cài đặt JDK 17 của bạn).

Kiểm tra chiến lược nén hiện có

Bạn có thể kiểm tra chiến lược nén hiện có trên các bảng bằng cách làm theo hướng dẫn trong Phụ lục 1. Nếu chiến lược nén đã là LeveledCompactionStrategy, thì có thể là do bạn bắt đầu bằng việc cài đặt Edge cho đám mây riêng tư phiên bản 4.51 trở lên hoặc trước đó đã thay đổi thành LeveledCompactionStrategy theo đề xuất của Apigee. Nếu bạn đang sử dụng LeveledCompactionStrategy, Apigee khuyên bạn nên tiếp tục sử dụng chiến lược này và tránh thay đổi. Tuy nhiên, vì Edge cho Đám mây riêng tư do bạn vận hành, nên hướng dẫn sau đây giải thích cách thay đổi chiến lược nén nếu muốn.

Sao lưu

Vì việc thay đổi chiến lược nén sẽ kích hoạt một chu kỳ nén đầy đủ trong các nút Cassandra, nên có thể gây ra một số độ trễ do tải nén và lưu lượng truy cập ứng dụng đồng thời. Việc khôi phục thay đổi này không yêu cầu bạn khôi phục từ bản sao lưu; bạn có thể trực tiếp khôi phục chiến lược nén như mô tả trong Lựa chọn 1: Khôi phục thay đổi. Tuy nhiên, để đề phòng, hãy xem phần Cách sao lưu để sao lưu dữ liệu trước khi thay đổi chiến lược nén.

Thông lượng nén

Sau khi chiến lược nén được thay đổi thành LeveledCompactionStrategy, quá trình nén có thể chạy trong một thời gian dài. Tuỳ thuộc vào kích thước của quá trình nén dữ liệu, thời gian chạy có thể khác nhau. Trong chu kỳ nén, Cassandra có thể sử dụng nhiều tài nguyên hệ thống hơn. Để đảm bảo quá trình nén không chiếm nhiều tài nguyên hệ thống (có thể làm gián đoạn các yêu cầu API Runtime), bạn nên đặt giới hạn cho thông lượng nén.

Chạy lệnh nodetool sau đây trên mỗi nút để đặt công suất nén tối đa là 128 MB trên tất cả các nút Cassandra:

nodetool setcompactionthroughput 128

Định cỡ máy ảo để nén

Trước khi thực hiện thay đổi này, hãy đảm bảo rằng các nút Cassandra có đủ tài nguyên CPU và bộ nhớ, đồng thời hoạt động ở mức tải CPU không quá 25%.

Sau khi thay đổi chiến lược nén, dự kiến sẽ chạy một chu kỳ nén đầy đủ, vì vậy, bạn nên thay đổi chiến lược nén trong thời gian lưu lượng truy cập thấp.

Chạy so le

Bạn có thể không hoàn tất được việc thay đổi tất cả các nút trong vòng một ngày, đặc biệt là nếu bạn vận hành các cụm Cassandra lớn, vì các chỉ mục cần được tạo lại trên từng nút một. Bạn có thể thay đổi chiến lược nén của một giản đồ hoặc một bảng tại một thời điểm. Để làm điều này, hãy sửa đổi bảng để thay đổi chiến lược nén, sau đó tạo lại tất cả các chỉ mục trên bảng (nếu có) trên tất cả các nút. Sau đó, hãy lặp lại quy trình trên cho từng bảng hoặc không gian khoá. Bạn có thể chia nhỏ các lần chạy như vậy cho một bảng hoặc một không gian khoá để chạy vào nhiều ngày.

Ví dụ: để thay đổi chiến lược nén của bảng oauth_20_access_tokens trong giản đồ kms thành LeveledCompactionStrategy, bạn có thể làm như sau:

  1. Thay đổi bảng để thay đổi chiến lược nén bằng cách chạy CQL sau:

    ALTER TABLE kms.oauth_20_access_tokens WITH compaction = {'class' : 'LeveledCompactionStrategy'};
  2. Tạo lại tất cả các chỉ mục của riêng bảng này:

    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   
        

Thay đổi chiến lược nén

Nhìn chung, việc thay đổi chiến lược nén là một quy trình gồm hai bước:

  1. Sửa đổi chiến lược nén của mọi bảng.
  2. Tạo lại tất cả chỉ mục trên từng nút.

Để sửa đổi chiến lược nén, bạn cần thực thi lệnh ALTER TABLE trên từng bảng tại một thời điểm. Lệnh ALTER TABLE mẫu sẽ có dạng như sau:

# To change to LeveledCompactionStrategy
ALTER TABLE kms.oauth_20_access_tokens WITH compaction = {'class' : 'LeveledCompactionStrategy'};
  
# To change to SizeTieredCompactionStrategy
ALTER TABLE kms.oauth_20_access_tokens WITH compaction = {'class' : 'SizeTieredCompactionStrategy'};

Sửa đổi bảng để đặt chiến lược nén mới

Chạy các CQL sau trên bất kỳ nút Cassandra nào để thay đổi chiến lược cho từng không gian khoá một. Bạn có thể chạy CQL trên lời nhắc CQL. Hướng dẫn gọi câu lệnh CQL:

/opt/apigee/apigee-cassandra/bin/cqlsh `hostname -i`

Đã kết nối với Apigee tại XXXXXXXX:9042.

[cqlsh 6.2.0 | Cassandra 5.0.8 | CQL spec 3.4.7 | Native protocol v5]
Use HELP for help.
cqlsh>

Các lệnh bên dưới đề cập đến việc thay đổi Chiến lược nén thành LeveledCompactionStrategy, nhưng bạn có thể dùng các lệnh tương tự để thay đổi thành các chiến lược nén khác.

Các bước từ 14 đến 16 dưới đây chỉ áp dụng nếu bạn sử dụng tính năng kiếm tiền.

  1. CQL để thay đổi chiến lược nén cho không gian khoá: 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'};
    
  2. CQL để thay đổi chiến lược nén cho không gian khoá: user_settings
    ALTER TABLE user_settings.user_settings WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    
  3. CQL để thay đổi chiến lược nén cho không gian khoá: keyvaluemap
    ALTER TABLE keyvaluemap.keyvaluemaps_r21 WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    
  4. CQL để thay đổi chiến lược nén cho không gian khoá: 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'};
    
  5. CQL để thay đổi chiến lược nén cho keyspace: 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'};
    
  6. CQL để thay đổi chiến lược nén cho không gian khoá: cache
    ALTER TABLE cache.cache_entries WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE cache.cache_sequence_id_r24 WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    
  7. CQL để thay đổi chiến lược nén cho không gian khoá: auth
    ALTER TABLE auth.totp WITH compaction = {'class' : 'LeveledCompactionStrategy'};
  8. CQL để thay đổi chiến lược nén cho không gian khoá: audit
    ALTER TABLE audit.audits WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE audit.audits_ref WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    
  9. CQL để thay đổi chiến lược nén cho không gian khoá: 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'};
  10. CQL để thay đổi chiến lược nén cho keyspace: apimodel_v2
    ALTER 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'};
  11. CQL để thay đổi chiến lược nén cho không gian khoá: identityzone
    ALTER TABLE identityzone.IdentityZones WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE identityzone.OrgToIdentityZone WITH compaction = {'class' : 'LeveledCompactionStrategy'};
  12. CQL để thay đổi chiến lược nén cho không gian khoá: dek
    ALTER TABLE dek.keys WITH compaction = {'class' : 'LeveledCompactionStrategy'};
  13. CQL để thay đổi chiến lược nén cho không gian khoá: 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'};
  14. [Chỉ dành cho tính năng kiếm tiền] CQL để thay đổi chiến lược nén cho không gian khoá: mint
    ALTER TABLE mint.limits WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE mint.suspended_developer_products WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE mint.invitations WITH compaction = {'class' : 'LeveledCompactionStrategy'};
  15. [Chỉ dành cho hoạt động kiếm tiền] CQL để thay đổi chiến lược nén cho keyspace: taurus
    ALTER TABLE taurus.triggers WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE taurus.job_details WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE taurus.org_triggers WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE taurus.triggers_suite WITH compaction = {'class' : 'LeveledCompactionStrategy'};
  16. [Chỉ dành cho tính năng kiếm tiền] CQL để thay đổi chiến lược nén cho không gian khoá: notification
    ALTER TABLE notification.notification_service_item WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE notification.notification_service_black_list_item WITH compaction = {'class' : 'LeveledCompactionStrategy'};
    ALTER TABLE notification.notification_email_template_item WITH compaction = {'class' : 'LeveledCompactionStrategy'};

Xây dựng lại chỉ mục

Bạn cần thực hiện bước này sau khi thay đổi chiến lược nén. Chạy từng lệnh nodetool sau đây trên mỗi nút Cassandra.

Các bước từ 7 đến 9 dưới đây chỉ áp dụng nếu bạn sử dụng tính năng kiếm tiền.

  1. Tạo lại chỉ mục cho không gian khoá: kms

    nodetool rebuild_index kms api_products api_products_organization_name_idx
    nodetool rebuild_index kms app_credentials app_credentials_api_products_idx
    nodetool rebuild_index kms app_credentials app_credentials_organization_app_id_idx
    nodetool rebuild_index kms app_credentials app_credentials_organization_name_idx
    nodetool rebuild_index kms app_end_user app_end_user_app_id_idx
    nodetool rebuild_index kms apps apps_app_family_idx
    nodetool rebuild_index kms apps apps_app_id_idx
    nodetool rebuild_index kms apps apps_app_type_idx
    nodetool rebuild_index kms apps apps_name_idx
    nodetool rebuild_index kms apps apps_organization_name_idx
    nodetool rebuild_index kms apps apps_parent_id_idx
    nodetool rebuild_index kms apps apps_parent_status_idx
    nodetool rebuild_index kms apps apps_status_idx
    nodetool rebuild_index kms maps maps_organization_name_idx
    nodetool rebuild_index kms oauth_10_access_tokens oauth_10_access_tokens_app_id_idx
    nodetool rebuild_index kms oauth_10_access_tokens oauth_10_access_tokens_consumer_key_idx
    nodetool rebuild_index kms oauth_10_access_tokens oauth_10_access_tokens_organization_name_idx
    nodetool rebuild_index kms oauth_10_access_tokens oauth_10_access_tokens_status_idx
    nodetool rebuild_index kms oauth_10_request_tokens oauth_10_request_tokens_consumer_key_idx
    nodetool rebuild_index kms oauth_10_request_tokens oauth_10_request_tokens_organization_name_idx
    nodetool rebuild_index kms oauth_10_verifiers oauth_10_verifiers_organization_name_idx
    nodetool rebuild_index kms oauth_10_verifiers oauth_10_verifiers_request_token_idx
    nodetool rebuild_index kms oauth_20_access_tokens oauth_20_access_tokens_app_id_idx
    nodetool rebuild_index kms oauth_20_access_tokens oauth_20_access_tokens_client_id_idx
    nodetool rebuild_index kms oauth_20_access_tokens oauth_20_access_tokens_refresh_token_idx
    nodetool rebuild_index kms oauth_20_authorization_codes oauth_20_authorization_codes_client_id_idx
    nodetool rebuild_index kms oauth_20_authorization_codes oauth_20_authorization_codes_organization_name_idx
    
  2. Tạo lại chỉ mục cho không gian khoá: 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
    
  3. Tạo lại chỉ mục cho không gian khoá: cache

    nodetool rebuild_index cache cache_entries cache_entries_cache_name_idx
    
  4. Tạo lại chỉ mục cho không gian khoá: 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
    
  5. Tạo lại chỉ mục cho không gian khoá: apimodel_v2

    nodetool rebuild_index apimodel_v2 apis a_name
    nodetool rebuild_index apimodel_v2 apis a_org_name
    nodetool rebuild_index apimodel_v2 apis_revision ar_a_active_rev
    nodetool rebuild_index apimodel_v2 apis_revision ar_a_def_index_template
    nodetool rebuild_index apimodel_v2 apis_revision ar_a_def_method_template
    nodetool rebuild_index apimodel_v2 apis_revision ar_a_latest_rev
    nodetool rebuild_index apimodel_v2 apis_revision ar_a_name
    nodetool rebuild_index apimodel_v2 apis_revision ar_a_uuid
    nodetool rebuild_index apimodel_v2 apis_revision ar_base_url
    nodetool rebuild_index apimodel_v2 apis_revision ar_is_active
    nodetool rebuild_index apimodel_v2 apis_revision ar_is_latest
    nodetool rebuild_index apimodel_v2 apis_revision ar_name
    nodetool rebuild_index apimodel_v2 apis_revision ar_org_name
    nodetool rebuild_index apimodel_v2 apis_revision ar_rel_ver
    nodetool rebuild_index apimodel_v2 apis_revision ar_rev_num
    nodetool rebuild_index apimodel_v2 method m_a_name
    nodetool rebuild_index apimodel_v2 method m_api_uuid
    nodetool rebuild_index apimodel_v2 method m_ar_uuid
    nodetool rebuild_index apimodel_v2 method m_base_url
    nodetool rebuild_index apimodel_v2 method m_name
    nodetool rebuild_index apimodel_v2 method m_org_name
    nodetool rebuild_index apimodel_v2 method m_r_name
    nodetool rebuild_index apimodel_v2 method m_r_uuid
    nodetool rebuild_index apimodel_v2 method m_res_path
    nodetool rebuild_index apimodel_v2 method m_rev_num
    nodetool rebuild_index apimodel_v2 resource r_a_name
    nodetool rebuild_index apimodel_v2 resource r_api_uuid
    nodetool rebuild_index apimodel_v2 resource r_ar_uuid
    nodetool rebuild_index apimodel_v2 resource r_base_url
    nodetool rebuild_index apimodel_v2 resource r_name
    nodetool rebuild_index apimodel_v2 resource r_org_name
    nodetool rebuild_index apimodel_v2 resource r_res_path
    nodetool rebuild_index apimodel_v2 resource r_rev_num
    nodetool rebuild_index apimodel_v2 schemas s_api_uuid
    nodetool rebuild_index apimodel_v2 schemas s_ar_uuid
    nodetool rebuild_index apimodel_v2 security sa_api_uuid
    nodetool rebuild_index apimodel_v2 security sa_ar_uuid
    nodetool rebuild_index apimodel_v2 template t_a_name
    nodetool rebuild_index apimodel_v2 template t_a_uuid
    nodetool rebuild_index apimodel_v2 template t_entity
    nodetool rebuild_index apimodel_v2 template t_name
    nodetool rebuild_index apimodel_v2 template t_org_name
    nodetool rebuild_index apimodel_v2 template_auth au_api_uuid
    
  6. Tạo lại chỉ mục cho không gian khoá: dek

    nodetool rebuild_index dek keys usecase_index
    
  7. [Chỉ dành cho hoạt động kiếm tiền] Xây dựng lại chỉ mục cho không gian khoá: mint

    nodetool rebuild_index mint limits limits_created_date_idx
    nodetool rebuild_index mint limits limits_id_idx
    nodetool rebuild_index mint limits limits_org_id_idx
    nodetool rebuild_index mint limits limits_updated_date_idx
    nodetool rebuild_index mint suspended_developer_products suspended_developer_products_created_date_idx
    nodetool rebuild_index mint suspended_developer_products suspended_developer_products_currency_idx
    nodetool rebuild_index mint suspended_developer_products suspended_developer_products_dev_id_idx
    nodetool rebuild_index mint suspended_developer_products suspended_developer_products_id_idx
    nodetool rebuild_index mint suspended_developer_products suspended_developer_products_limit_id_idx
    nodetool rebuild_index mint suspended_developer_products suspended_developer_products_org_id_idx
    nodetool rebuild_index mint suspended_developer_products suspended_developer_products_prod_id_idx
    nodetool rebuild_index mint suspended_developer_products suspended_developer_products_reason_code_idx
    nodetool rebuild_index mint suspended_developer_products suspended_developer_products_sub_org_id_idx
    nodetool rebuild_index mint invitations invitations_company_id_idx
    nodetool rebuild_index mint invitations invitations_created_at_idx
    nodetool rebuild_index mint invitations invitations_developer_id_idx
    nodetool rebuild_index mint invitations invitations_lastmodified_at_idx
    nodetool rebuild_index mint invitations invitations_org_id_idx
    
  8. [Chỉ dành cho hoạt động kiếm tiền] Xây dựng lại chỉ mục cho không gian khoá: taurus

    nodetool rebuild_index taurus triggers triggers_env_idx
    nodetool rebuild_index taurus triggers triggers_job_id_idx
    nodetool rebuild_index taurus triggers triggers_org_id_idx
    nodetool rebuild_index taurus job_details job_details_job_class_name_idx
    nodetool rebuild_index taurus job_details job_details_job_group_idx
    nodetool rebuild_index taurus job_details job_details_job_name_idx
    nodetool rebuild_index taurus org_triggers org_triggers_org_id_idx
    nodetool rebuild_index taurus triggers_suite triggers_suite_group_idx
    nodetool rebuild_index taurus triggers_suite triggers_suite_name_idx
    nodetool rebuild_index taurus triggers_suite triggers_suite_suite_id_idx
    
  9. [Chỉ dành cho tính năng kiếm tiền] Tạo lại chỉ mục cho không gian khoá: notification

    nodetool rebuild_index notification notification_service_item notification_service_item_org_id_idx
    nodetool rebuild_index notification notification_service_item notification_service_item_status_idx
    nodetool rebuild_index notification notification_service_black_list_item notification_service_black_list_item_org_id_idx
    nodetool rebuild_index notification notification_service_black_list_item notification_service_black_list_item_to_email_idx
    nodetool rebuild_index notification notification_email_template_item notification_email_template_item_name_idx
    nodetool rebuild_index notification notification_email_template_item notification_email_template_item_org_id_idx
    

Xác minh

  1. Kiểm tra để đảm bảo rằng thay đổi về chiến lược nén trên giản đồ đã có hiệu lực bằng cách làm theo hướng dẫn trong Phụ lục 1.
  2. Xác minh rằng quá trình nén đã chạy thành công và dữ liệu được nén sau khi thay đổi chiến lược:
    1. Trên mỗi nút Cassandra, hãy chạy lệnh nodetool sau đây để xem tất cả các thao tác nén đã hoàn tất và không có thao tác nào đang chờ xử lý:
      nodetool compactionstats
    2. Sau khi xác minh bằng lệnh ở trên để đảm bảo không có hoạt động nén nào đang chờ xử lý, hãy kiểm tra dấu thời gian sửa đổi gần đây nhất của các tệp dữ liệu (trong /opt/apigee/data/apigee-cassandra/data/) để đảm bảo dấu thời gian này xuất hiện sau dấu thời gian khi CQL thay đổi chiến lược nén được thực thi.

Khôi phục

Trong trường hợp cần khôi phục, bạn có thể chọn một trong các cách sau:

Cách 1: Huỷ thay đổi

Khôi phục chiến lược nén về chiến lược ban đầu.

Chạy các lệnh ALTER TABLE tương tự trên câu lệnh CQL mà bạn đã chạy trước đó để thay đổi chiến lược nén.

Nếu đã tạo lại chỉ mục trong khi thay đổi chiến lược nén thành LeveledCompactionStrategy, bạn sẽ cần tạo lại chỉ mục. Làm theo các bước tương tự như trước đây để tạo lại tất cả các chỉ mục. Nếu trước đó bạn chưa tạo lại chỉ mục, thì bạn không cần tạo lại chỉ mục trong quá trình khôi phục.

Cách 2: Khôi phục toàn bộ dữ liệu từ bản sao lưu

Khôi phục dữ liệu từ bản sao lưu cho tất cả các keyspace:

Làm theo hướng dẫn để khôi phục như được nêu trong phần Khôi phục từ bản sao lưu.

Phụ lục 1: Kiểm tra chiến lược nén

Chiến lược nén được đặt ở cấp bảng trong Cassandra. Bạn có thể sử dụng các truy vấn bên dưới để kiểm tra chiến lược nén cho từng bảng.

Bạn có thể chạy CQL tại dấu nhắc CQL. Cách gọi lời nhắc CQL:

/opt/apigee/apigee-cassandra/bin/cqlsh `hostname -i`

Bạn sẽ thấy một phản hồi như sau:

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>

Bạn có thể xác định chiến lược nén hiện tại như sau:

Mỗi hàng trong đầu ra liên quan đến một bảng trong một không gian khoá. Đối với mỗi hàng, cột compaction cho biết chiến lược nén mà bảng sử dụng.

  • Nếu chiến lược nén được đặt thành SizeTieredCompactionStrategy, thì cột compaction trong các truy vấn bên dưới sẽ có dạng như sau:
  • {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
  • Nếu chiến lược nén được đặt thành LeveledCompactionStrategy, thì cột compaction trong các truy vấn bên dưới sẽ có dạng như sau:
  • {'class': 'org.apache.cassandra.db.compaction.LeveledCompactionStrategy'}

Bạn có thể chạy các truy vấn bên dưới để xác định chiến lược nén cho từng bảng trong một không gian khoá cụ thể:

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';