Skip to main content

الوصف

يتضمن قائمة بجميع عمليات BACKUP أو RESTORE مع حالاتها الحالية وخصائصها الأخرى. لاحظ أن هذا الجدول غير دائم، ولا يعرض إلا العمليات التي نُفِّذت بعد آخر إعادة تشغيل للخادم.

الأعمدة

  • id (String) — معرّف العملية، ويمكن تمريره عبر SETTINGS id=... أو إنشاؤه عشوائيًا كـ UUID.
  • name (String) — اسم العملية، وهو سلسلة مثل Disk('backups', 'my_backup')
  • base_backup_name (String) — اسم عملية النسخة الاحتياطية الأساسية، وهو سلسلة مثل Disk('backups', 'my_base_backup')
  • query_id (String) — معرّف الاستعلام الذي بدأ النسخ الاحتياطي.
  • status (Enum8(‘CREATING_BACKUP’ = 0, ‘BACKUP_CREATED’ = 1, ‘BACKUP_FAILED’ = 2, ‘RESTORING’ = 3, ‘RESTORED’ = 4, ‘RESTORE_FAILED’ = 5, ‘BACKUP_CANCELLED’ = 6, ‘RESTORE_CANCELLED’ = 7)) — حالة عملية النسخ الاحتياطي أو الاستعادة.
  • error (String) — رسالة الخطأ، إن وجدت.
  • start_time (DateTime64(6)) — الوقت الذي بدأت فيه العملية.
  • end_time (DateTime64(6)) — الوقت الذي انتهت فيه العملية.
  • num_files (UInt64) — عدد الملفات المخزّنة في النسخة الاحتياطية.
  • total_size (UInt64) — الحجم الإجمالي للملفات المخزّنة في النسخة الاحتياطية.
  • num_entries (UInt64) — عدد العناصر في النسخة الاحتياطية، أي عدد الملفات داخل المجلد إذا كانت النسخة الاحتياطية مخزّنة كمجلد.
  • uncompressed_size (UInt64) — الحجم غير المضغوط للنسخة الاحتياطية.
  • compressed_size (UInt64) — الحجم المضغوط للنسخة الاحتياطية.
  • files_read (UInt64) — يعرض عدد الملفات التي تمت قراءتها أثناء RESTORE من هذه النسخة الاحتياطية.
  • bytes_read (UInt64) — يعرض الحجم الإجمالي للملفات التي تمت قراءتها أثناء RESTORE من هذه النسخة الاحتياطية.
  • ProfileEvents (Map(LowCardinality(String), UInt64)) — جميع أحداث profile التي جرى التقاطها أثناء هذه العملية.
  • settings (Map(LowCardinality(String), String)) — الإعدادات الخاصة بالنسخ الاحتياطي/الاستعادة المستخدمة فعليًا لهذه العملية (من عبارة SETTINGS، بما في ذلك القيم الافتراضية). لا يتم إظهار الإعدادات الحساسة.
  • engine_settings (Map(LowCardinality(String), String)) — الإعدادات التي يستخدمها فعليًا قارئ/كاتب engine النسخ الاحتياطي (مثل allow_native_copy في S3). تكون فارغة عندما تتضمن العملية أكثر من engine واحد، بحيث يتعذر تمثيلها بخريطة مسطّحة: incremental backups وعمليات الاستعادة، وعمليات استعادة snapshot خفيفة الوزن، وعمليات ON CLUSTER غير الداخلية.

ذرّية الاستعادة

RESTORE ليست عمليةً معاملية، ولا تتراجع عند الفشل. بالنسبة إلى كل جدول، تُنسخ جميع الأجزاء المحددة قبل إرفاق أيٍّ منها، لكن مرحلة الإرفاق نفسها ليست معاملية — إذ تصبح الأجزاء مرئية جزءًا تلو الآخر. وتُعالَج الجداول بشكل مستقل. الجداول مستقلة. فالجدول الذي تكتمل استعادته يبقى كما هو حتى إذا فشل جدول آخر في الأمر نفسه لاحقًا:
إذا فشل هذا الأمر بعد استعادة db.t0 بالكامل، ولكن قبل اكتمال استعادة db.t1، فسيبقى db.t0 مستعادًا. العبارة PARTITIONS ليست حدًا فاصلًا لعملية commit. فهي تحدد فقط أي أجزاء الجدول ستتم استعادتها:
تُنسخ أولًا جميع أجزاء الجدول المحددة، ولا تُرفق إلا بعد أن تصبح كلها جاهزة. لذلك، إذا فشل هذا الأمر أثناء مرحلة النسخ — على سبيل المثال، بعد أن يكون القسم 2026-06-01 قد نُسخ بالكامل بينما لم يكتمل 2026-06-02 و2026-06-03 بعد — فلن يكون 2026-06-01 قد اعتُمِد، وسيبقى الجدول من دون أي بيانات مستعادة من هذا الأمر. وبمجرد اكتمال مرحلة النسخ وبدء خطوة الإرفاق، تُعتمَد الأجزاء واحدًا تلو الآخر، لذا فإن حدوث فشل أثناء الإرفاق قد يترك الجدول مستعادًا جزئيًا، من دون التراجع. لاعتِماد الأقسام بشكل مستقل (بحيث يبقى القسم المكتمل بعد حدوث فشل لاحق ويمكن إعادة المحاولة له بمعزل عن غيره)، شغّل أمر RESTORE منفصلًا لكل قسم، باستخدام SETTINGS allow_non_empty_tables = true بعد الأول.
آخر تعديل في ٢٣ يوليو ٢٠٢٦