كيف تنسخ حاوية Docker لـClickHouse احتياطيًا (2026)
يحتاج ClickHouse تفريغًا متسقًا قبل أن يلمس restic. ينفّذ Dockstash الأمر `clickhouse-client --query "BACKUP DATABASE default TO Disk('backups', 'snapshot')"` داخل الحاوية ويلتقط المخرجات ويخزنها مشفّرة خارجيًا — ولا ينسخ /var/lib/clickhouse حيًا أبدًا، لأن تجمّد تعليمة BACKUP الأصلية أجزاء الجداول باتساق، إذ يدمج ClickHouse الأجزاء ويحوّلها في الخلفية حيث تتمزق النسخة الخام.
ما يكتشفه Dockstash
| متغيرات البيئة المكتشفة | CLICKHOUSE_USER, CLICKHOUSE_PASSWORD, CLICKHOUSE_DB |
|---|---|
| المنفذ الافتراضي | 8123 |
| مسارات البيانات الحية (لا تُنسخ حية أبدًا) | /var/lib/clickhouse |
| أمثلة الصور | clickhouse/clickhouse-server:24, clickhouse/clickhouse-server, yandex/clickhouse-server |
انسخ ClickHouse مع Dockstash خطوة بخطوة
أنشئ حساب Dockstash وافتح لوحة التحكم
سجّل مجانًا على app.dockstash.com/register. يسألك معالج الإعداد لمرة واحدة عن خادم التخزين VPS (الجهاز الذي سيحتفظ بالنسخ الاحتياطية المشفّرة) ويولّد كلمة مرور تشفير — احفظها فورًا في مدير كلمات مرور، فهي تُعرض مرة واحدة فقط.
أضف مشروع Docker الذي يشغّل ClickHouse
في شاشة Projects يكتشف Dockstash تلقائيًا كل مجلد مشروع Compose على الخادم (افتراضيًا تحت /var/www). اختر المشروع الذي يحتوي خدمة ClickHouse. لم يُنسخ شيء بعد — أنت فقط تخبر Dockstash أين يقيم المشروع.
تحقق من اكتشاف ClickHouse
افتح المشروع وتبويب Plan. يقرأ Dockstash ملف docker-compose.yml ويتعرف على صورة clickhouse/clickhouse-server ويضيف طبقة بأمر النسخ الصحيح — مع اسم الحاوية والمتغيرات المكتشفة (CLICKHOUSE_USER وCLICKHOUSE_PASSWORD وCLICKHOUSE_DB). فعّل أو عطّل الملفات والقواعد وإعدادات الوكيل قبل الحفظ.
اختياري: تحقق من الخادم يدويًا
إن أردت دليلًا قبل الأتمتة، نفّذ clickhouse-client مع SHOW DATABASES داخل الحاوية. سترى قواعدك مدرجة (default وsystem وما أنشأه تطبيقك) — إياها ستلتقط تعليمة BACKUP DATABASE الأصلية كأجزاء parts متسقة للجداول.
docker exec <clickhouse-container> clickhouse-client --query "SHOW DATABASES"أكّد وجهة التخزين
تُخزَّن النسخ كلقطات restic مشفّرة على خادم التخزين VPS الخاص بك عبر SSH. إن أكملت معالج الإعداد فهي مهيّأة بالفعل؛ ويمكنك تغيير المضيف والمستخدم والمنفذ ومفتاح SSH في أي وقت من Settings → Storage.
اضبط جدول النسخ الاحتياطي
في تبويب Schedule اختر يوميًا أو أسبوعيًا أو cron مخصصًا (يُتحقق أثناء الكتابة). يوميًا في ساعة هادئة هو الافتراضي الصحيح لأحمال التحليلات — بيانات ClickHouse تصل دفعات وكل ساعة نادرًا ما يفيد. أضف prune أسبوعيًا مع سياسة الاحتفاظ.
شغّل أول نسخة احتياطية الآن
انقر Backup Now. ينفّذ Dockstash تعليمة BACKUP DATABASE الأصلية داخل الحاوية لإنتاج لقطة متسقة لأجزاء الجداول ثم يسلّم الناتج إلى restic — تابع المخرجات في لوحة السجلات. أول تشغيل على جدول MergeTree كبير قد يطول؛ التالية تُزيل التكرار مقابله.
تأكد من وجود اللقطة
عند انتهاء التشغيل تعرض بطاقة المشروع وقت آخر نسخة وعدد اللقطات وحجم المستودع. افتح شاشة Snapshots وسترى نقطة الاستعادة في الخط الزمني — هذا دليلك على وصول النسخة إلى موقعها الخارجي.
أمر التفريغ
clickhouse-client --query "BACKUP DATABASE default TO Disk('backups', 'snapshot')"أمر الاستعادة
clickhouse-client --query "RESTORE DATABASE default FROM Disk('backups', 'snapshot')"تجمّد تعليمة BACKUP الأصلية أجزاء الجداول باتساق، إذ يدمج ClickHouse الأجزاء ويحوّلها في الخلفية حيث تتمزق النسخة الخام.
استعد نسخة ClickHouse وأثبت أنها تعمل
نسخة ClickHouse لا تصبح حقيقية إلا بعد استعادتها. استعادات Dockstash لا تكتب فوق القاعدة الحية افتراضيًا — إلى موقع جديد أولًا، فحص، ثم ترقية واعية.
اختر نقطة استعادة
افتح Snapshots واختر المشروع وتصفح الخط الزمني. كل صف BACKUP متسق لقاعدة ClickHouse — أجزاء جداول مجمّدة لا نسخة ملفات ممزقة — مع ملفات المشروع من التشغيل نفسه.
استعد إلى موقع جديد
انقر Restore وأبقِ الوضع الافتراضي «Restore to new location». اكتب اسم المشروع للتأكيد — إجراء متعمّد بتأكيد مكتوب. يهبط التفريغ والملفات في المسار الهدف الذي تختاره دون المساس بالمشروع الحي.
تحقق من البيانات المستعادة
نفّذ RESTORE DATABASE في حاوية ClickHouse تجريبية ثم استعلم: SELECT count() FROM system.tables يثبت عودة الجداول، وcount() على أكبر جدول MergeTree مقارنةً بالإنتاج أسرع اختبار.
docker exec <clickhouse-container> clickhouse-client --query "SELECT count() FROM system.tables"رقِّ النتيجة عند الاقتناع
بعد التحقق من البيانات المستعادة وجّه تطبيقك إليها (أو أعد الاستعادة بوضع «Overwrite existing» — موافقة صريحة). الأفضل: دع تدريب الاستعادة الأسبوعي ينتج هذا الدليل تلقائيًا كي لا تكون الاستعادة الحقيقية أول بروفة لك.
مطبات يجب تجنبها
- لا تشغّل restic أبدًا على الدليل الحي /var/lib/clickhouse/store — الأجزاء تُدمج وتُحوَّل في الخلفية والنسخ الخام غير متسق.
- يتطلب SQL الخاص بـBACKUP/RESTORE قرص نسخ مُعدًا في إعداد الخادم؛ وبدونه استخدم أداة clickhouse-backup التي تجمّد الأجزاء عبر روابط صلبة.
- جداول MergeTree الكبيرة تنتج نسخًا كبيرة؛ تساعد إزالة تكرار restic التزايدية لكن BACKUP الأولي قد يكون ضخمًا.
مشكلات شائعة في نسخ ClickHouse
- العرض
- تفشل BACKUP DATABASE بخطأ قرص مجهول أو مفقود.
- السبب
- تكتب تعليمة BACKUP الأصلية إلى قرص نسخ مسمّى ولا قرص معلن في إعداد الخادم.
- العلاج
- أضف قرص backups تحت <storage_configuration> (أو مدخل قرص مسموح <backups>) في إعداد ClickHouse وأعد التشغيل، أو انتقل إلى أداة clickhouse-backup التي تجمّد الأجزاء عبر روابط صلبة دون قرص مُعد.
- العرض
- نسخة خام من /var/lib/clickhouse تُستعاد إلى خادم يبلّغ عن أجزاء تالفة أو مفقودة.
- السبب
- يدمج ClickHouse أجزاء الجداول ويحوّلها في الخلفية باستمرار؛ نسخ الملفات أثناء الدمج يلتقط أدلة في منتصف إعادة كتابة.
- العلاج
- لا تنسخ دليل البيانات الحي أبدًا. استخدم BACKUP DATABASE أو clickhouse-backup — كلاهما يجمّد أولًا مجموعة أجزاء متسقة — ودع Dockstash يسلّم الناتج إلى restic.
- العرض
- النسخة الأولى ضخمة وتستغرق أطول من المتوقع بكثير.
- السبب
- مع جداول MergeTree الكبيرة يجسّد BACKUP الأولي كل جزء مرة؛ لا نقطة بداية أصغر.
- العلاج
- دع التشغيل الأول يكتمل — إزالة تكرار restic ووضع BACKUP التزايدي يبقيان كل التشغيلات اللاحقة صغيرة. تابع التقدم في لوحة السجلات واتجاه حجم المستودع على بطاقة المشروع.
أنجزه بنقرة واحدة مع Dockstash
ينفّذ Dockstash التفريغ أعلاه بالضبط ويسلّمه إلى restic خارجيًا ويختبر الاستعادة بتدريب تلقائيًا — بلا سكربت تصونه.
آخر تحديث: July 2026
الأسئلة الشائعة
ما الطريقة الصحيحة لنسخ ClickHouse؟
استخدم تعليمة BACKUP الأصلية (BACKUP DATABASE ... TO Disk(...)) أو أداة clickhouse-backup. كلاهما ينتج لقطة متسقة لأجزاء الجداول. يسلّم Dockstash بعدها دليل النسخ الناتج إلى restic.
هل يمكن نسخ /var/lib/clickhouse بدلًا من ذلك؟
لا. يدمج ClickHouse الأجزاء ويحوّلها باستمرار في الخلفية: نسخة الدليل الحي غير متسقة. تعليمة BACKUP أو clickhouse-backup يجمّدان الأجزاء بأمان.
تعليمة BACKUP أم clickhouse-backup — أيهما أستخدم؟
التعليمة الأصلية أبسط مع قرص نسخ مُعد. وclickhouse-backup مفيد لتجميد الأجزاء بروابط صلبة وشحنها، خاصة على الإصدارات الأقدم. يقبل Dockstash كلا الناتجين.
هل نسخ ClickHouse تزايدية؟
تدعم تعليمة BACKUP النسخ التزايدي مقابل أساس، ويضيف restic إزالة تكراره فوقها: اللقطات المتكررة تبقى مدمجة.
كم مرة يجب نسخ ClickHouse؟
يوميًا هو العملي — بيانات التحليلات تصل دفعات وإزالة تكرار restic تجعل اللقطات اليومية رخيصة. في Free النسخ يدوي (Backup Now)؛ Pro يفتح حتى الساعي وBusiness أي cron.
أين تعيش النسخ الاحتياطية فعليًا؟
على خادم التخزين VPS الخاص بك، كلقطات restic مشفّرة تُدفع عبر SSH. لا يحتفظ Dockstash ببياناتك أبدًا على سحابة طرف ثالث — أنت توجّهه إلى جهاز تتحكم فيه، والمستودع مشفّر بكلمة مرور لا يملكها سواك.
كيف أعرف أن النسخة قابلة للاستعادة دون استعادة يدوية؟
جدوِل تدريب استعادة. يستعيد Dockstash أحدث لقطة إلى مساحة عمل معزولة، ويقارن كل ملف بايتًا ببايت مع المصدر، ويتحقق من التفريغ المستعاد — ثم يختم المشروع بشارة نجاح/فشل. تدريب أسبوعي يعني دليلًا طازجًا دائمًا.