تستخدم Apigee قاعدة بيانات Cassandra لتخزين معظم بياناتها، بما في ذلك بيانات الخوادم الوكيلة وذاكرات التخزين المؤقت والرموز المميّزة. يُعدّ الضغط عملية مهمة لتقليل حجم البيانات المخزّنة في قواعد البيانات، وهي ضرورية للحفاظ على عمليات قاعدة البيانات بكفاءة. تتيح Cassandra استراتيجيات مختلفة للضغط. تنصح Apigee جميع عملاء Edge for Private Cloud بتشغيل مجموعات Cassandra باستخدام LeveledCompactionStrategy بدلاً من SizeTieredCompactionStrategy التلقائية لجميع الجداول. تقدّم LeveledCompactionStrategy أداءً أفضل واستخدامًا محسّنًا للقرص وعمليات ضغط أكثر كفاءة وتتطلّب مساحة خالية أقل مقارنةً بـ SizeTieredCompactionStrategy.
تضبط جميع عمليات التثبيت الجديدة لإصدار Edge for Private Cloud 4.52.02 أو إصدار أحدث تلقائيًا
Cassandra باستخدام LeveledCompactionStrategy. ومع ذلك، إذا كنت قد رقّيت إلى Edge for Private Cloud 4.54.00 من إصدار سابق، قد يظلّ تثبيتك يستخدم Cassandra مع SizeTieredCompactionStrategy.
على الرغم من أنّه لا يُنصح بتغيير استراتيجية الضغط إلى أي استراتيجية أخرى غير LeveledCompactionStrategy، توضّح هذه المستندات كيفية إجراء التغيير إذا لزم الأمر وتقدّم تعليمات للتحقّق من استراتيجية الضغط الحالية. قد يؤدي تغيير استراتيجية الضغط إلى خيار غير مُنصَح به إلى استبدال التغييرات التي أجريتها بترقيات برامج Cassandra المستقبلية. ننصحك بالتحقّق من استراتيجية الضغط بعد كل ترقية إذا كنت تستخدم طريقة غير عادية.
الإعداد
المتطلبات الأساسية
في Edge for Private Cloud 4.54.00، يتطلّب Cassandra 5.x الإصدار JDK 17 (Java 17).
قبل تشغيل أوامر nodetool أو cqlsh على عُقدة Cassandra، تأكَّد من ضبط Java 17 كإصدار Java التلقائي (على سبيل المثال، من خلال تشغيل sudo alternatives --set java JAVA_17_PATH/bin/java أو ضبط JAVA_HOME على تثبيت JDK 17).
التحقّق من استراتيجية الضغط الحالية
يمكنك التحقّق من استراتيجية الضغط الحالية على الجداول باتّباع الـ
تعليمات الواردة في الملحق 1.
إذا كانت استراتيجية الضغط هي LeveledCompactionStrategy,
قد يرجع ذلك إلى البدء بتثبيت Edge for Private Cloud
4.51 أو إصدار أحدث، أو إلى تغييرها سابقًا إلى
LeveledCompactionStrategy كما تنصح Apigee. إذا كنت تستخدم LeveledCompactionStrategy، تنصحك Apigee بمواصلة استخدام هذه الاستراتيجية وتجنُّب إجراء تغييرات. ومع ذلك، بما أنّك من يشغّل Edge for
Private Cloud، توضّح التعليمات التالية كيفية
تغيير استراتيجية الضغط إذا أردت ذلك.
الاحتفاظ بنسخة احتياطية
بما أنّ تغيير استراتيجية الضغط يؤدي إلى تشغيل دورة ضغط كاملة في عُقد Cassandra، قد يؤدي ذلك إلى بعض حالات التأخير بسبب حمل عمليات الضغط وحركة بيانات التطبيق المتزامنة. لا يتطلّب التراجع عن هذا التغيير الاستعادة من نسخة احتياطية، بل يمكنك التراجع عن استراتيجية الضغط مباشرةً كما هو موضّح في الخيار 1: التراجع عن التغيير. ومع ذلك، كإجراء احترازي، يُرجى الاطّلاع على كيفية الاحتفاظ بنسخة احتياطية من بياناتك قبل تغيير استراتيجية الضغط.
سرعة معالجة بيانات الضغط
بعد تغيير استراتيجية الضغط إلى LeveledCompactionStrategy، قد تستغرق عمليات الضغط وقتًا طويلاً. قد يختلف وقت التشغيل حسب حجم ضغط البيانات. أثناء دورة الضغط
، قد تستخدم Cassandra المزيد من موارد النظام. لضمان عدم استهلاك الضغط للكثير من
موارد النظام، ما قد يؤدي إلى تعطيل طلبات "وقت تشغيل واجهة برمجة التطبيقات"، ننصحك بضبط حدود لـ
سرعة معالجة بيانات الضغط.
شغِّل الأمر nodetool التالي على كل عُقدة لضبط سرعة معالجة بيانات الضغط على
128 ميغابايت كحدّ أقصى على جميع عُقد Cassandra:
nodetool setcompactionthroughput 128
تحديد حجم الأجهزة الافتراضية لعمليات الضغط
قبل تنفيذ هذا التغيير، تأكَّد من أنّ عُقد Cassandra لديها ما يكفي من موارد وحدة المعالجة المركزية و الذاكرة وأنّها لا تعمل بأكثر من% 25 من حمل وحدة المعالجة المركزية.
بعد تغيير استراتيجية الضغط، من المتوقّع تشغيل دورة ضغط كاملة، لذا ننصحك بتغيير استراتيجية الضغط خلال فترات انخفاض حركة البيانات.
عمليات التشغيل المتدرّجة
قد لا تتمكّن من إكمال تغيير جميع العُقد خلال يوم واحد، خاصةً إذا كنت تشغّل مجموعات Cassandra كبيرة، لأنّه يجب إعادة إنشاء الفهارس على كل عُقدة واحدة تلو الأخرى. يمكنك تغيير استراتيجية الضغط لمخطط واحد أو جدول واحد في كل مرة. لإجراء ذلك، عدِّل الجدول لتغيير استراتيجية الضغط الخاصة به، ثم أعِد إنشاء جميع الفهارس على الجدول (إن وُجدت) على جميع العُقد. بعد ذلك، كرِّر الإجراء أعلاه لكل جدول أو مساحة مفاتيح. يمكن تقسيم عمليات التشغيل هذه لجدول واحد أو مساحة مفاتيح واحدة ليتم تشغيلها على مدار أيام مختلفة.
على سبيل المثال، لتغيير استراتيجية الضغط لجدول oauth_20_access_tokens في مخطط kms إلى LeveledCompactionStrategy، يمكنك إجراء ما يلي:
-
عدِّل الجدول لتغيير استراتيجية الضغط من خلال تشغيل CQL التالي:
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
تغيير استراتيجية الضغط
على مستوى عالٍ، يتألف تغيير استراتيجية الضغط من خطوتين:
- عدِّل استراتيجية الضغط لكل جدول.
- أعِد إنشاء جميع الفهارس على كل عُقدة واحدة تلو الأخرى.
لتعديل استراتيجية الضغط، عليك تنفيذ أمر ALTER TABLE على كل جدول واحد في كل مرة. سيبدو نموذج أمر ALTER TABLE على النحو التالي:
# To change to LeveledCompactionStrategyALTER TABLEkms.oauth_20_access_tokens WITH compaction = {'class' : 'LeveledCompactionStrategy'}; # To change to SizeTieredCompactionStrategyALTER TABLEkms.oauth_20_access_tokens WITH compaction = {'class' : 'SizeTieredCompactionStrategy'};
تعديل الجدول لضبط استراتيجية ضغط جديدة
شغِّل CQLs التالية على أي عُقدة Cassandra واحدة لتغيير الاستراتيجية لمساحة مفاتيح واحدة في كل مرة. يمكن تشغيل CQLs على سطر أوامر CQL. تعليمات لاستدعاء سطر أوامر CQL:
/opt/apigee/apigee-cassandra/bin/cqlsh `hostname -i`
تم الاتصال بـ Apigee على XXXXXXXX:9042.
[cqlsh 6.2.0 | Cassandra 5.0.8 | CQL spec 3.4.7 | Native protocol v5] Use HELP for help. cqlsh>
تغطّي الأوامر أدناه تغيير "استراتيجية الضغط" إلى LeveledCompactionStrategy، ولكن يمكن استخدام أوامر مشابهة للتغيير إلى استراتيجيات ضغط أخرى.
لا تنطبق الخطوات من 14 إلى 16 أدناه إلا إذا كنت تستخدم تحقيق الربح.
- CQLs لتغيير استراتيجية الضغط لمساحة المفاتيح:
kmsALTER TABLE kms.organizations WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE kms.maps WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE kms.apps WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE kms.app_credentials WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE kms.api_products WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE kms.apiproducts_appslist WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE kms.api_resources WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE kms.app_end_user WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE kms.oauth_20_authorization_codes WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE kms.oauth_20_access_tokens WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE kms.oauth_10_request_tokens WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE kms.oauth_10_access_tokens WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE kms.oauth_10_verifiers WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE kms.app_enduser_tokens WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - CQLs لتغيير استراتيجية الضغط لمساحة المفاتيح:
user_settingsALTER TABLE user_settings.user_settings WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - CQLs لتغيير استراتيجية الضغط لمساحة المفاتيح:
keyvaluemapALTER TABLE keyvaluemap.keyvaluemaps_r21 WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - CQLs لتغيير استراتيجية الضغط لمساحة المفاتيح:
devconnectALTER TABLE devconnect.developers WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE devconnect.companies WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE devconnect.company_developers WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - CQLs لتغيير استراتيجية الضغط لمساحة المفاتيح:
counterALTER TABLE counter.counters_current_version WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE counter.counters_with_expiry WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE counter.counters WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE counter.key_timestamp_count WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE counter.timestamp_key WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE counter.period_timestamp WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE counter.gateway_quota WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - CQLs لتغيير استراتيجية الضغط لمساحة المفاتيح:
cacheALTER TABLE cache.cache_entries WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE cache.cache_sequence_id_r24 WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - CQLs لتغيير استراتيجية الضغط لمساحة المفاتيح:
authALTER TABLE auth.totp WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - CQLs لتغيير استراتيجية الضغط لمساحة المفاتيح:
auditALTER TABLE audit.audits WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE audit.audits_ref WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - CQLs لتغيير استراتيجية الضغط لمساحة المفاتيح:
apprepoALTER TABLE apprepo.organizations WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE apprepo.environments WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE apprepo.apiproxies WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE apprepo.apiproxy_revisions WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE apprepo.api_proxy_revisions_r21 WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - CQLs لتغيير استراتيجية الضغط لمساحة المفاتيح:
apimodel_v2ALTER TABLE apimodel_v2.apis WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE apimodel_v2.apis_revision WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE apimodel_v2.resource WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE apimodel_v2.method WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE apimodel_v2.revision_counters WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE apimodel_v2.template_counters WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE apimodel_v2.template WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE apimodel_v2.credentials WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE apimodel_v2.credentialsv2 WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE apimodel_v2.schemas WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE apimodel_v2.security WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE apimodel_v2.template_auth WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - CQLs لتغيير استراتيجية الضغط لمساحة المفاتيح:
identityzoneALTER TABLE identityzone.IdentityZones WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE identityzone.OrgToIdentityZone WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - CQLs لتغيير استراتيجية الضغط لمساحة المفاتيح:
dekALTER TABLE dek.keys WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - CQLs لتغيير استراتيجية الضغط لمساحة المفاتيح:
analyticsALTER TABLE analytics.custom_aggregates_defn WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE analytics.custom_rules_defn WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE analytics.custom_aggregates_defn_updates WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE analytics.custom_rules_defn_updates WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - [تحقيق الربح فقط] CQLs لتغيير استراتيجية الضغط لمساحة المفاتيح:
mintALTER TABLE mint.limits WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE mint.suspended_developer_products WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE mint.invitations WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - [تحقيق الربح فقط] CQLs لتغيير استراتيجية الضغط لمساحة المفاتيح:
taurusALTER TABLE taurus.triggers WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE taurus.job_details WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE taurus.org_triggers WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE taurus.triggers_suite WITH compaction = {'class' : 'LeveledCompactionStrategy'}; - [تحقيق الربح فقط] CQLs لتغيير استراتيجية الضغط لمساحة المفاتيح:
notificationALTER TABLE notification.notification_service_item WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE notification.notification_service_black_list_item WITH compaction = {'class' : 'LeveledCompactionStrategy'}; ALTER TABLE notification.notification_email_template_item WITH compaction = {'class' : 'LeveledCompactionStrategy'};
إعادة إنشاء الفهارس
يجب تنفيذ هذه الخطوة بعد أي تغيير في استراتيجية الضغط. شغِّل الأوامر nodetool التالية واحدًا تلو الآخر على كل عُقدة Cassandra.
لا تنطبق الخطوات من 7 إلى 9 أدناه إلا إذا كنت تستخدم تحقيق الربح.
-
أعِد إنشاء فهارس مساحة المفاتيح:
kmsnodetool rebuild_index kms api_products api_products_organization_name_idx nodetool rebuild_index kms app_credentials app_credentials_api_products_idx nodetool rebuild_index kms app_credentials app_credentials_organization_app_id_idx nodetool rebuild_index kms app_credentials app_credentials_organization_name_idx nodetool rebuild_index kms app_end_user app_end_user_app_id_idx nodetool rebuild_index kms apps apps_app_family_idx nodetool rebuild_index kms apps apps_app_id_idx nodetool rebuild_index kms apps apps_app_type_idx nodetool rebuild_index kms apps apps_name_idx nodetool rebuild_index kms apps apps_organization_name_idx nodetool rebuild_index kms apps apps_parent_id_idx nodetool rebuild_index kms apps apps_parent_status_idx nodetool rebuild_index kms apps apps_status_idx nodetool rebuild_index kms maps maps_organization_name_idx nodetool rebuild_index kms oauth_10_access_tokens oauth_10_access_tokens_app_id_idx nodetool rebuild_index kms oauth_10_access_tokens oauth_10_access_tokens_consumer_key_idx nodetool rebuild_index kms oauth_10_access_tokens oauth_10_access_tokens_organization_name_idx nodetool rebuild_index kms oauth_10_access_tokens oauth_10_access_tokens_status_idx nodetool rebuild_index kms oauth_10_request_tokens oauth_10_request_tokens_consumer_key_idx nodetool rebuild_index kms oauth_10_request_tokens oauth_10_request_tokens_organization_name_idx nodetool rebuild_index kms oauth_10_verifiers oauth_10_verifiers_organization_name_idx nodetool rebuild_index kms oauth_10_verifiers oauth_10_verifiers_request_token_idx nodetool rebuild_index kms oauth_20_access_tokens oauth_20_access_tokens_app_id_idx nodetool rebuild_index kms oauth_20_access_tokens oauth_20_access_tokens_client_id_idx nodetool rebuild_index kms oauth_20_access_tokens oauth_20_access_tokens_refresh_token_idx nodetool rebuild_index kms oauth_20_authorization_codes oauth_20_authorization_codes_client_id_idx nodetool rebuild_index kms oauth_20_authorization_codes oauth_20_authorization_codes_organization_name_idx
-
أعِد إنشاء فهارس مساحة المفاتيح:
devconnectnodetool rebuild_index devconnect companies companies_name_idx nodetool rebuild_index devconnect companies companies_organization_name_idx nodetool rebuild_index devconnect companies companies_status_idx nodetool rebuild_index devconnect company_developers company_developers_company_name_idx nodetool rebuild_index devconnect company_developers company_developers_developer_email_idx nodetool rebuild_index devconnect company_developers company_developers_organization_name_idx nodetool rebuild_index devconnect developers developers_email_idx nodetool rebuild_index devconnect developers developers_organization_name_idx nodetool rebuild_index devconnect developers developers_status_idx
-
أعِد إنشاء فهارس مساحة المفاتيح:
cachenodetool rebuild_index cache cache_entries cache_entries_cache_name_idx
-
أعِد إنشاء فهارس مساحة المفاتيح:
auditnodetool rebuild_index audit audits audits_operation_idx nodetool rebuild_index audit audits audits_requesturi_idx nodetool rebuild_index audit audits audits_responsecode_idx nodetool rebuild_index audit audits audits_timestamp_idx nodetool rebuild_index audit audits audits_user_idx
-
أعِد إنشاء فهارس مساحة المفاتيح:
apimodel_v2nodetool rebuild_index apimodel_v2 apis a_name nodetool rebuild_index apimodel_v2 apis a_org_name nodetool rebuild_index apimodel_v2 apis_revision ar_a_active_rev nodetool rebuild_index apimodel_v2 apis_revision ar_a_def_index_template nodetool rebuild_index apimodel_v2 apis_revision ar_a_def_method_template nodetool rebuild_index apimodel_v2 apis_revision ar_a_latest_rev nodetool rebuild_index apimodel_v2 apis_revision ar_a_name nodetool rebuild_index apimodel_v2 apis_revision ar_a_uuid nodetool rebuild_index apimodel_v2 apis_revision ar_base_url nodetool rebuild_index apimodel_v2 apis_revision ar_is_active nodetool rebuild_index apimodel_v2 apis_revision ar_is_latest nodetool rebuild_index apimodel_v2 apis_revision ar_name nodetool rebuild_index apimodel_v2 apis_revision ar_org_name nodetool rebuild_index apimodel_v2 apis_revision ar_rel_ver nodetool rebuild_index apimodel_v2 apis_revision ar_rev_num nodetool rebuild_index apimodel_v2 method m_a_name nodetool rebuild_index apimodel_v2 method m_api_uuid nodetool rebuild_index apimodel_v2 method m_ar_uuid nodetool rebuild_index apimodel_v2 method m_base_url nodetool rebuild_index apimodel_v2 method m_name nodetool rebuild_index apimodel_v2 method m_org_name nodetool rebuild_index apimodel_v2 method m_r_name nodetool rebuild_index apimodel_v2 method m_r_uuid nodetool rebuild_index apimodel_v2 method m_res_path nodetool rebuild_index apimodel_v2 method m_rev_num nodetool rebuild_index apimodel_v2 resource r_a_name nodetool rebuild_index apimodel_v2 resource r_api_uuid nodetool rebuild_index apimodel_v2 resource r_ar_uuid nodetool rebuild_index apimodel_v2 resource r_base_url nodetool rebuild_index apimodel_v2 resource r_name nodetool rebuild_index apimodel_v2 resource r_org_name nodetool rebuild_index apimodel_v2 resource r_res_path nodetool rebuild_index apimodel_v2 resource r_rev_num nodetool rebuild_index apimodel_v2 schemas s_api_uuid nodetool rebuild_index apimodel_v2 schemas s_ar_uuid nodetool rebuild_index apimodel_v2 security sa_api_uuid nodetool rebuild_index apimodel_v2 security sa_ar_uuid nodetool rebuild_index apimodel_v2 template t_a_name nodetool rebuild_index apimodel_v2 template t_a_uuid nodetool rebuild_index apimodel_v2 template t_entity nodetool rebuild_index apimodel_v2 template t_name nodetool rebuild_index apimodel_v2 template t_org_name nodetool rebuild_index apimodel_v2 template_auth au_api_uuid
-
أعِد إنشاء فهارس مساحة المفاتيح:
deknodetool rebuild_index dek keys usecase_index
-
[تحقيق الربح فقط] أعِد إنشاء فهارس مساحة المفاتيح:
mintnodetool rebuild_index mint limits limits_created_date_idx nodetool rebuild_index mint limits limits_id_idx nodetool rebuild_index mint limits limits_org_id_idx nodetool rebuild_index mint limits limits_updated_date_idx nodetool rebuild_index mint suspended_developer_products suspended_developer_products_created_date_idx nodetool rebuild_index mint suspended_developer_products suspended_developer_products_currency_idx nodetool rebuild_index mint suspended_developer_products suspended_developer_products_dev_id_idx nodetool rebuild_index mint suspended_developer_products suspended_developer_products_id_idx nodetool rebuild_index mint suspended_developer_products suspended_developer_products_limit_id_idx nodetool rebuild_index mint suspended_developer_products suspended_developer_products_org_id_idx nodetool rebuild_index mint suspended_developer_products suspended_developer_products_prod_id_idx nodetool rebuild_index mint suspended_developer_products suspended_developer_products_reason_code_idx nodetool rebuild_index mint suspended_developer_products suspended_developer_products_sub_org_id_idx nodetool rebuild_index mint invitations invitations_company_id_idx nodetool rebuild_index mint invitations invitations_created_at_idx nodetool rebuild_index mint invitations invitations_developer_id_idx nodetool rebuild_index mint invitations invitations_lastmodified_at_idx nodetool rebuild_index mint invitations invitations_org_id_idx
-
[تحقيق الربح فقط] أعِد إنشاء فهارس مساحة المفاتيح:
taurusnodetool rebuild_index taurus triggers triggers_env_idx nodetool rebuild_index taurus triggers triggers_job_id_idx nodetool rebuild_index taurus triggers triggers_org_id_idx nodetool rebuild_index taurus job_details job_details_job_class_name_idx nodetool rebuild_index taurus job_details job_details_job_group_idx nodetool rebuild_index taurus job_details job_details_job_name_idx nodetool rebuild_index taurus org_triggers org_triggers_org_id_idx nodetool rebuild_index taurus triggers_suite triggers_suite_group_idx nodetool rebuild_index taurus triggers_suite triggers_suite_name_idx nodetool rebuild_index taurus triggers_suite triggers_suite_suite_id_idx
-
[تحقيق الربح فقط] أعِد إنشاء فهارس مساحة المفاتيح:
notificationnodetool rebuild_index notification notification_service_item notification_service_item_org_id_idx nodetool rebuild_index notification notification_service_item notification_service_item_status_idx nodetool rebuild_index notification notification_service_black_list_item notification_service_black_list_item_org_id_idx nodetool rebuild_index notification notification_service_black_list_item notification_service_black_list_item_to_email_idx nodetool rebuild_index notification notification_email_template_item notification_email_template_item_name_idx nodetool rebuild_index notification notification_email_template_item notification_email_template_item_org_id_idx
التحقق
- تأكَّد من أنّ تغيير استراتيجية الضغط على المخطط قد أصبح ساريًا باتّباع التعليمات الواردة في الملحق 1.
- تأكَّد من أنّ عملية الضغط قد تم تشغيلها بنجاح وأنّه تم ضغط البيانات بعد تغيير الاستراتيجية:
- على كل عُقدة Cassandra، شغِّل أمر nodetool التالي لمعرفة ما إذا كانت جميع عمليات الضغط قد اكتملت ولم يتبقَّ أي عمليات معلّقة:
nodetool compactionstats
- بعد التأكّد من عدم وجود أي عمليات ضغط معلّقة باستخدام الأمر أعلاه، تحقَّق من الطابع الزمني لآخر تعديل لملفات البيانات (ضمن
/opt/apigee/data/apigee-cassandra/data/) ليكون بعد الطابع الزمني الذي تم فيه تنفيذ CQL لتغيير استراتيجية الضغط.
- على كل عُقدة Cassandra، شغِّل أمر nodetool التالي لمعرفة ما إذا كانت جميع عمليات الضغط قد اكتملت ولم يتبقَّ أي عمليات معلّقة:
العودة إلى الحالة السابقة
في حال الحاجة إلى إجراء عملية عودة إلى الحالة السابقة، يمكنك اختيار أحد الخيارَين أدناه:
الخيار 1: التراجع عن التغيير
يمكنك التراجع عن استراتيجية الضغط إلى الاستراتيجية التي كانت لديك في الأصل.
شغِّل أوامر `ALTER TABLE` مشابهة على سطر أوامر CQL التي سبق أن شغّلتها لتغيير استراتيجية الضغط.
إذا سبق لك إعادة إنشاء الفهارس أثناء تغيير استراتيجية الضغط إلى LeveledCompactionStrategy، عليك إعادة إنشاء الفهارس مرة أخرى. اتّبِع الخطوات نفسها التي اتّبعتها سابقًا لـ إعادة إنشاء جميع الفهارس. إذا لم تعِد إنشاء الفهارس سابقًا، ليس عليك إعادة إنشائها أثناء العودة إلى الحالة السابقة.
الخيار 2: استعادة البيانات بالكامل من النسخة الاحتياطية
يمكنك استعادة البيانات من النسخة الاحتياطية لجميع مساحات المفاتيح:
اتّبِع التعليمات الخاصة بالاستعادة كما هو موضّح في مقالة الاستعادة من نسخة احتياطية.
الملحق 1: التحقّق من استراتيجية الضغط
يتم ضبط استراتيجيات الضغط على مستوى الجدول في Cassandra. يمكنك استخدام طلبات البحث أدناه للتحقّق من استراتيجية الضغط لكل جدول.
يمكنك تشغيل CQLs على سطر أوامر CQL. لاستدعاء سطر أوامر CQL:
/opt/apigee/apigee-cassandra/bin/cqlsh `hostname -i`
سيظهر لك ردّ مشابه لما يلي:
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>
يمكنك تحديد استراتيجية الضغط الحالية على النحو التالي:
يشير كل صف في الناتج إلى جدول ضمن مساحة مفاتيح. بالنسبة إلى كل صف، يشير العمود compaction إلى استراتيجية الضغط التي يستخدمها الجدول.
- إذا تم ضبط استراتيجية الضغط على SizeTieredCompactionStrategy، سيبدو العمود compaction في طلبات البحث أدناه على النحو التالي:
- إذا تم ضبط استراتيجية الضغط على LeveledCompactionStrategy، سيبدو العمود compaction في طلبات البحث أدناه على النحو التالي:
{'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}{'class': 'org.apache.cassandra.db.compaction.LeveledCompactionStrategy'}يمكن تشغيل طلبات البحث أدناه لتحديد استراتيجية الضغط لكل جدول في مساحة مفاتيح معيّنة:
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';