Skip to main content

نظرة عامة

توجد طريقتان أساسيتان لترحيل البيانات من ClickHouse ذاتي الإدارة (OSS) إلى ClickHouse Cloud:
  • استخدام الدالة remoteSecure()، حيث تُسحَب البيانات أو تُدفَع مباشرةً.
  • استخدام أوامر BACKUP/RESTORE عبر تخزين الكائنات السحابي
يركّز دليل الترحيل هذا على نهج BACKUP/RESTORE، ويقدّم مثالًا عمليًا على ترحيل قاعدة بيانات أو خدمة كاملة من ClickHouse مفتوح المصدر إلى Cloud عبر حاوية S3.
المتطلبات المسبقة
  • أن يكون Docker مثبتًا لديك
  • أن تكون لديك حاوية S3 ومستخدم IAM
  • أن تكون قادرًا على إنشاء خدمة ClickHouse Cloud جديدة
ولتسهيل متابعة الخطوات الواردة في هذا الدليل وإمكانية تكرارها، سنستخدم إحدى وصفات Docker Compose لعنقود ClickHouse يضم شاردين ونسختين متماثلتين.
العنقود مطلوبتتطلب طريقة النسخ الاحتياطي هذه عنقود ClickHouse، لأن الجداول يجب تحويلها من المحرك MergeTree إلى ReplicatedMergeTree. إذا كنت تشغّل مثيلًا واحدًا، فاتبع الخطوات الواردة في “Migrating between self-managed ClickHouse and ClickHouse Cloud using remoteSecure” بدلًا من ذلك.

التحضير لـ OSS

سننشئ أولًا عنقود ClickHouse باستخدام تهيئة Docker Compose من مستودع الأمثلة الخاص بنا. يمكنك تجاهل إنشاء عنقود ClickHouse إذا كان لديك عنقود يعمل بالفعل.
  1. استنسخ مستودع الأمثلة إلى جهازك المحلي
  2. من الطرفية، استخدم cd للانتقال إلى examples/docker-compose-recipes/recipes/cluster_2S_2R
  3. تأكد من أن Docker يعمل، ثم ابدأ عنقود ClickHouse:
من المفترض أن ترى:
من نافذة طرفية جديدة عند جذر المجلد، شغّل الأمر التالي للاتصال بالعقدة الأولى في العنقود:

من جدول MergeTree إلى جدول ReplicatedMergeTree

يعمل ClickHouse Cloud مع SharedMergeTree. وعند استعادة نسخة احتياطية، يحوّل ClickHouse تلقائيًا الجداول التي تستخدم ReplicatedMergeTree إلى جداول SharedMergeTree. ومن المرجّح أن جداولك تستخدم بالفعل المحرّك ReplicatedMergeTree إذا كنت تشغّل عنقودًا. وإذا لم يكن الأمر كذلك، فستحتاج إلى تحويل أي جداول MergeTree إلى ReplicatedMergeTree قبل أخذ نسخة احتياطية منها. ولتوضيح كيفية تحويل جداول MergeTree إلى ReplicatedMergeTree، سنبدأ بجدول MergeTree ثم نحوّله لاحقًا إلى ReplicatedMergeTree. سنتبع أول خطوتين من دليل بيانات سيارات الأجرة في نيويورك لإنشاء جدول نموذجي وتحميل البيانات إليه. وقد أُدرجت هاتان الخطوتان أدناه تيسيرًا عليك. شغّل الأوامر التالية لإنشاء قاعدة بيانات جديدة وإدراج البيانات من حاوية S3 في جدول جديد:
نفّذ الأمر التالي لإجراء DETACH للجدول.
ثم ألحِقه كجدول مكرّر:
أخيرًا، استعد البيانات الوصفية للنسخة المتماثلة:
تحقّق من تحويله إلى ReplicatedMergeTree:
أنت الآن جاهز لمتابعة إعداد خدمة Cloud الخاصة بك تمهيدًا لاستعادة نسخة احتياطية لاحقًا من حاوية S3 الخاصة بك.

الجداول الموزعة مع ReplicatedMergeTree

إذا كان إعدادك يستخدم جداول موزعة عبر عدة شوارد، فستحتاج إلى جدول ReplicatedMergeTree محلي على كل عقدة، وإلى جدول Distributed ليكون نقطة دخول للاستعلامات. شغّل الأمر التالي لإنشاء الجدول المحلي المُكرَّر على جميع عقد العنقود:
ثم أنشئ جدول Distributed فوقه:
أدرِج البيانات عبر الجدول الموزّع:

التحضير لـ Cloud

ستستعيد بياناتك إلى خدمة Cloud جديدة. اتبع الخطوات أدناه لإنشاء خدمة Cloud جديدة.
1

افتح Cloud Console

2

أنشئ خدمة جديدة

3

اضبط الإعدادات وأنشئ خدمة

اختر المنطقة والتكوين المطلوبين، ثم انقر على Create service
4

أنشئ دور وصول

افتح SQL Console

إعداد الوصول إلى S3

لاستعادة النسخة الاحتياطية من S3، ستحتاج إلى تهيئة وصول آمن بين ClickHouse Cloud وحاوية S3 الخاصة بك.
  1. اتبع الخطوات الواردة في “Accessing S3 data securely” لإنشاء دور وصول والحصول على ARN الخاص بالدور.
  2. حدّث سياسة حاوية S3 التي أنشأتها في “How to create an S3 bucket and IAM role” بإضافة ARN الخاص بالدور من الخطوة السابقة.
ستبدو السياسة المحدّثة لحاوية S3 على النحو التالي تقريبًا:
تتضمن السياسة كِلا ARNين:
  • مستخدم IAM (docs-s3-user): يتيح لعنقود ClickHouse ذاتي الإدارة لديك أخذ نسخة احتياطية إلى S3
  • ClickHouse Cloud role (ClickHouseAccess-001): يتيح لخدمة Cloud لديك الاستعادة من S3

أخذ نسخة احتياطية (في النشر ذاتي الإدارة)

يجب أخذ نسخة احتياطية لكل شارد بشكل مستقل. اتصل بعقدة في كل شارد، ثم شغّل أمر النسخ الاحتياطي باستخدام مسار وجهة فريد لكل شارد. استبدل BUCKET_URL وKEY_ID وSECRET_KEY ببيانات اعتماد AWS الخاصة بك. يوضح لك الدليل “كيفية إنشاء حاوية S3 ودور IAM” كيفية الحصول عليها إذا لم تكن لديك بعد. الشارد 1:
الشارد 2:
إذا كان كل شيء مُعدًّا على نحو صحيح، فسترى استجابة مشابهة لما هو موضح أدناه، تتضمن معرّفًا فريدًا مُخصَّصًا للنسخة الاحتياطية وحالة النسخة الاحتياطية.
عمليات النشر ذات العقدة الواحدةإذا كنت لا تستخدم الجداول الموزعة، فيمكنك إنشاء نسخة احتياطية من قاعدة البيانات بالكامل بأمر واحد:
إذا تفقدت حاوية S3 التي كانت فارغة سابقًا، فسترى الآن ظهور بعض المجلدات: إذا كنت تُجري ترحيلًا كاملًا، فيمكنك تشغيل الأمر التالي لإنشاء نسخة احتياطية من الخادم بالكامل:
يأخذ الأمر أعلاه نسخة احتياطية مما يلي:
  • جميع قواعد بيانات المستخدم والجداول
  • حسابات المستخدمين وكلمات المرور
  • الأدوار والأذونات
  • ملفات تعريف الإعدادات
  • سياسات الصفوف
  • الحصص
  • الدوال المعرّفة من قبل المستخدم
إذا كنت تستخدم موفّر خدمات Cloud (CSP) آخر، فيمكنك استخدام الصيغة TO S3() (لكلٍّ من AWS وGCP) وTO AzureBlobStorage(). بالنسبة إلى قواعد البيانات الكبيرة جدًا، فكّر في استخدام ASYNC لتشغيل النسخ الاحتياطي في الخلفية:
يمكن بعد ذلك استخدام معرّف النسخة الاحتياطية لمتابعة تقدّم عملية النسخ الاحتياطي:
يمكن أيضًا إجراء نسخ احتياطية تزايدية. لمزيد من التفاصيل عن النسخ الاحتياطية عمومًا، يُرجى الرجوع إلى وثائق النسخ الاحتياطي والاستعادة.

الاستعادة إلى ClickHouse Cloud

استعِد النسخة الاحتياطية لكل شارد على حدة إلى خدمة Cloud الخاصة بك. اضبط ROLE_ARN على القيمة التي تم الحصول عليها من “الوصول إلى بيانات S3 بأمان”. استخدم SETTINGS allow_non_empty_tables=true في عملية الاستعادة الثانية (وأي عملية استعادة لاحقة) بحيث تُضاف بيانات الشارد إلى الجداول التي تمت استعادتها بالفعل بدلًا من فشل العملية بسبب تعارض: الشارد 1:
الشارد 2:
عمليات النشر غير الموزعةإذا كنت لا تستخدم الجداول الموزعة، فاستعِد قاعدة البيانات بأمر واحد:
وبالمثل، يمكنك إجراء استعادة كاملة للخدمة:
بعد اكتمال عملية الاستعادة، يمكنك التحقق من توفّر البيانات في Cloud:
نظرًا إلى أن ClickHouse Cloud يستخدم SharedMergeTree داخليًا، لم تعد هناك حاجة إلى الجدول الموزّع القديم. يمكنك حذفه واستبداله بعرض يحتفظ باسم الجدول الأصلي لاستعلاماتك:
ستُستعاد جداول ReplicatedMergeTree غير الموزعة كجداول SharedMergeTree:
آخر تعديل في ٢٣ يوليو ٢٠٢٦