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 của mình, bao gồm cả dữ liệu cho proxy, bộ nhớ đệm và mã thông báo. Thu gọn là một quá trình quan trọng để giảm kích thước dữ liệu lưu trữ trong cơ sở dữ liệu, giúp duy trì các hoạt động hiệu quả đối với 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 dành cho Private Cloud đều nên 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, khả năng sử dụng ổ đĩa tốt hơn, tính năng nén hiệu quả hơn và cần ít dung lượng trống hơn so với SizeTieredCompactionStrategy.

Mọi lượt cài đặt mới của Apigee 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 đang dùng phiên bản cũ của Apigee hoặc đã nâng cấp Apigee 4.52.02 lên từ phiên bản cũ hơn, thì bạn vẫn có thể sử dụng Cassandra với SizeTieredCompactionStrategy để cài đặt.

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

Chuẩn bị

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 cài đặt từ phiên bản OPDK 4.51 trở lên hoặc trước đó đã thay đổi thành LeveledCompactionStrategy theo đề xuất của Apigee. Nếu đang sử dụng LeveledCompactionStrategy, bạn nên tiếp tục sử dụng chiến lược này và tránh các thay đổi. Tuy nhiên, vì bạn vận hành Edge dành cho Đám mây riêng tư nên các hướng dẫn sau sẽ giải thích cách thay đổi chiến lược nén nếu bạn muốn.

Sao lưu

Do việc thay đổi chiến lược nén sẽ kích hoạt chu trình nén hoàn toàn trong các nút Cassandra, nên thao tác này có thể tạo ra một số độ trễ do tải lực nén và lưu lượng ứng dụng đồng thời. Bạn có thể cần phải khôi phục thay đổi này để khôi phục các nút Cassandra từ các bản sao lưu. Hãy xem phần Cách sao lưu để tìm hiểu cách sao lưu dữ liệu của bạn trước khi thay đổi chiến lược nén.

Công suất nén

Sau khi thay đổi chiến lược nén thành LeveledCompactionStrategy, các tính năng nén có thể chạy trong trong một khoảng thời gian dài. Tuỳ thuộc vào kích thước của tính năng nén dữ liệu, thời gian chạy có thể khác nhau. Trong quá trình nén chu kỳ, Cassandra có thể sử dụng nhiều tài nguyên hệ thống hơn. Để đảm bảo việc 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 Thời gian chạy API, 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 từng nút để thiết lập thông lượng nén ở mức tối đa ở 128MB trên tất cả các nút Cassandra:

nodetool setcompactionthroughput 128

Định kích thước máy ảo để nén

Đảm bảo các nút Cassandra có đủ tài nguyên CPU và bộ nhớ trước khi thực thi thay đổi này. Hãy đảm bảo rằng không có nút Cassandra nào đang hoạt động ở mức hơn 25% tải CPU trước khi thực thi thay đổi này.

Sau khi thay đổi chiến lược nén, chu trình nén dự kiến sẽ chạy hoàn toàn, vì vậy, bạn nên thay đổi chiến lược nén chặt trong khoảng thời gian có 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 một ngày, đặc biệt là khi bạn vận hành các cụm Cassandra lớn, vì bạn cần phải tạo lại chỉ mục trên từng nút trên từng nú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 mỗi lần. Để làm được điều này, hãy thay đổi bảng để thay đổi chiến lược nén và sau đó tạo lại tất cả chỉ mục trên bảng (nếu có) trên tất cả các nút. Sau đó, lặp lại quy trình trên cho từng bảng hoặc không gian phím. Những lần chạy như vậy cho một bảng hoặc một không gian phím có thể được chia nhỏ để chạy trong 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ả chỉ mục của 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à quá trình gồm 2 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 mộ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 một. Lệnh ALTER TABLE mẫu sẽ có dạng như dưới đây:

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

Thay đổi bảng để thiết lập chiến lược nén mới

Chạy các CQL sau trên một nút Cassandra bất kỳ để thay đổi chiến lược cho một không gian phím mỗi lần. CQL có thể được chạy trên lời nhắc CQL. Hướng dẫn thực hiện lời nhắc CQL:

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

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

[cqlsh 5.0.1 | Cassandra 3.11.16 | CQL spec 3.4.4 | Native protocol v4]
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ũng có thể dùng các lệnh tương tự để thay đổi sang 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. Các câu lệnh (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. Các câu lệnh (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. Các câu lệnh (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. Các câu lệnh (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. Các câu lệnh (CQL) để thay đổi chiến lược nén cho không gian khoá: 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. Các câu lệnh (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. Các câu lệnh (CQL) để thay đổi chiến lược nén cho không gian khoá: auth
    ALTER TABLE auth.totp WITH compaction = {'class' : 'LeveledCompactionStrategy'};
  8. Các câu lệnh (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. Các câu lệnh (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. Các câu lệnh (CQL) để thay đổi chiến lược nén cho không gian khoá: 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. Các câu lệnh (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. Các câu lệnh (CQL) để thay đổi chiến lược nén cho không gian khoá: dek
    ALTER TABLE dek.keys WITH compaction = {'class' : 'LeveledCompactionStrategy'};
  13. Các câu lệnh (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 hoạt độ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 không gian khoá: 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 hoạt độ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'};

Tạo lại chỉ số

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

Các bước 7 đến 9 bên dưới 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] Tạo 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] Tạo 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 hoạt độ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 xem thay đổi chiến lược nén trên giản đồ đã có hiệu lực hay chưa 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ệnhnodetool sau đây để xem tất cả các tính năng nén đã hoàn tất và không có tệp 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ó tệp 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/) để sau dấu thời gian khi thực thi CQL thay đổi chiến lược nén.

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 lựa chọn bên dưới:

Lựa chọn 1: Huỷ bỏ thay đổi

Khôi phục chiến lược nén về chiến lược bạn đã thực hiện ban đầu.

Chạy các lệnh ALTER TABLE tương tự trên lời nhắc 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ẽ phải tạo lại chỉ mục. Thực hiện theo các bước tương tự như trước đó để tạo lại tất cả chỉ mục. Nếu không tạo lại chỉ mục trước đó, 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 không gian khoá:

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

Phụ lục 1: Chiến lược nén kiểm tra

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 mỗi 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 5.0.1 | Cassandra 3.11.16 | CQL spec 3.4.4 | Native protocol v4]
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 dữ liệu đầ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 nén 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 ColorTieredCompactionStrategy, 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 bạn đặt chiến lược nén thành LeveledCompactionStrategy, thì mức độ nén của cột 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 dưới đây để xác định chiến lược nén cho mỗi 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';