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)) — جميع أحداث ملف التعريف التي جرى التقاطها أثناء هذه العملية.
  • settings (Map(LowCardinality(String), String)) — إعدادات النسخ الاحتياطي/الاستعادة المستخدمة فعليًا لهذه العملية (من عبارة SETTINGS، بما في ذلك القيم الافتراضية). لا تُعرَض الإعدادات الحساسة.
  • engine_settings (Map(LowCardinality(String), String)) — الإعدادات التي يستخدمها فعليًا قارئ/كاتب محرك النسخ الاحتياطي (مثل allow_native_copy في S3). تكون فارغة عندما تتضمن العملية أكثر من محرك واحد لا يمكن تمثيله بخريطة مسطحة، مثل النسخ الاحتياطية والاستعادات التزايدية، واستعادات اللقطات خفيفة الوزن، وعمليات 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 بعد الأول.
آخر تعديل في ١٤ أغسطس ٢٠٢٦