إنشاء لقطة
يستخدم النسخ الاحتياطي باللقطة الأمر القياسيBACKUP مع experimental_lightweight_snapshot = true. ويُعدّ الإعداد id مطلوبًا — إذ يحدد اسم اللقطة ويُستخدم للإشارة إليها في أوامر فكّ القفل والأوبزرفابيليتي:
id وstatus، ويمكن استخدام id لتتبّع العملية في system.backups.
أنشئ نسخة احتياطية لجدول واحد على S3:
الاستعادة إلى الخدمة نفسها
نظرًا لأن اللقطة تحتفظ بمراجع إلى ملفات تخزين الكائنات بدلًا من نسخ البيانات نفسها، فإن الاستعادة إلى خدمة ClickHouse جديدة أو أخرى تتطلب الوصول إلى تخزين الكائنات الأصلي. لذلك، لا تتوفر الاستعادة بين الخدمات عبر SQL — فهي متاحة فقط من خلال واجهة المستخدم. وعبر SQL، يمكنك استعادة لقطة إلى الخدمة نفسها من حاوية نسخ احتياطي خارجية باستخدامsnapshot_from_current_service = 1. يقرأ هذا الكائنات مباشرةً عبر قرص الوجهة بدلًا من المرور عبر قارئ لقطات بعيد:
AS البيانات إلى جدول باسم جديد، مع إبقاء الجدول الأصلي دون تغيير. وللاستبدال بالجدول الأصلي، احذفه أولًا:
فكّ قفل لقطة
تحتفظ كل لقطة بأقفال في ClickHouse Keeper تمنع حذف ملفات تخزين الكائنات المشار إليها تلقائيًا ضمن عملية تنظيف المهملات. بعد اكتمال الاستعادة — أو عندما لا تعود هناك حاجة إلى اللقطة — فكّ قفلها لتحرير تلك الأقفال. يوجد شكلان: فكّ قفل على مستوى النظام يزيل جميع أقفال اللقطة دفعةً واحدة، وفكّ قفل لكل جدول يزيل القفل عن جدول واحد مع الإبقاء على بقية اللقطة كما هي. فكّ القفل على مستوى النظام — يزيل جميع أقفال اللقطة:FROM اختياريًا إذا كانت وجهة اللقطة محفوظة في Keeper وقت الإنشاء (كما يظهر في العمود info ضمن system.snapshot_locks):
system.snapshot_locks، كما تُزال الأجزاء التي لم تعد لقطات أخرى تشير إليها من system.snapshot_parts.
الأوبزرفابيليتي
system.backups
تظهر جميع عمليات اللقطات فيsystem.backups إلى جانب عمليات النسخ الاحتياطي والاستعادة العادية. استعلم منه باستخدام id الذي عيّنته (أو معرّف UUID الذي أعاده الأمر):
system.snapshot_locks
يعرضsystem.snapshot_locks اللقطات المعتمدة والمسجَّلة حاليًا في Keeper. عند اعتماد لقطة، تُنشأ عقدة في Keeper عند /clickhouse/snapshot/committed/{snapshot_id}. قبل حذف أي جزء بيانات، يتحقق الخادم مما إذا كانت لقطة معتمدة تحتفظ بقفل على ذلك الجزء. وإذا كان الأمر كذلك، يُتخطى الحذف. ويستمر القفل إلى أن تُلغي قفل اللقطة صراحةً.
يمثّل كل صف لقطة مُعتمدة واحدة. إذا رأيت أقفالًا للقطات لم تعد لها وجهة نسخ احتياطي صالحة، فشغّل
SYSTEM UNLOCK SNAPSHOT لإزالتها.
للتحقق مما إذا كان قفل لقطة محددة موجودًا:
system.snapshot_parts
يعرضsystem.snapshot_parts أجزاء البيانات المرتبطة حاليًا بقفل لقطة واحد على الأقل. ولكل جزء بيانات مقفَل، توجد عقدة Keeper عند /clickhouse/snapshot/{table_uuid}/{part_name} تتضمن حجمه المضغوط وغير المضغوط. ويقرأ هذا الجدول تلك العقد ليوضح الأجزاء المحمية حاليًا من الحذف.
الأجزاء التي تكون فيها
snapshots_size > 1 تكون مُشارًا إليها من عدة لقطات، ولن تُزال من تخزين الكائنات حتى يُرفع القفل عن جميع اللقطات التي تحتفظ بها.
للتحقق من إجمالي التخزين المُثبّت: