الاحتفاظ بنسخة احتياطية من البيانات واستعادتها

ينطبق ذلك على إصدارَي Firestore Standard وFirestore Enterprise.

توضّح هذه الصفحة كيفية استخدام ميزة النُسخ الاحتياطية المجدوَلة في Cloud Firestore. يمكنك استخدام النُسخ الاحتياطية لحماية بياناتك من تلف البيانات على مستوى التطبيق أو من حذف البيانات غير المقصود.

تتيح لك النُسخ الاحتياطية ضبط جداول زمنية للاحتفاظ بنُسخ احتياطية يومية أو أسبوعية من قاعدة البيانات المحدّدة. يمكنك بعد ذلك استخدام هذه النُسخ الاحتياطية لاستعادة البيانات إلى قاعدة بيانات جديدة.

لمحة عن النُسخ الاحتياطية

النسخة الاحتياطية هي نسخة متسقة من قاعدة البيانات في وقت معيّن. تحتوي النسخة الاحتياطية على جميع إعدادات البيانات والفهرس في تلك اللحظة.

لا تحتوي النسخة الاحتياطية على سياسات مدة صلاحية قاعدة البيانات. توجد النسخة الاحتياطية في الموقع نفسه الذي توجد فيه قاعدة البيانات المصدر.

تتوفّر للنسخ الاحتياطية فترة احتفاظ قابلة للضبط، ويتم تخزينها إلى أن تنتهي صلاحية فترة الاحتفاظ أو إلى أن تحذف النسخة الاحتياطية. لا يؤدي حذف قاعدة البيانات المصدر إلى حذف النُسخ الاحتياطية ذات الصلة تلقائيًا.

يخزّن Cloud Firestore البيانات الوصفية المرتبطة بالنُسخ الاحتياطية والجداول الزمنية للنُسخ الاحتياطية المرتبطة بقاعدة بيانات. يحتفظ Cloud Firestore بهذه البيانات الوصفية إلى أن تنتهي صلاحية جميع النُسخ الاحتياطية لقاعدة البيانات أو يتم حذفها.

لا يؤثر إنشاء النُسخ الاحتياطية أو الاحتفاظ بها في أداء عمليات القراءة أو الكتابة في قاعدة البيانات المباشرة.

التكاليف

عند استخدام النُسخ الاحتياطية، يتم تحصيل رسوم مقابل ما يلي:

  • مقدار مساحة التخزين التي تستخدمها كل نسخة احتياطية
  • بالنسبة إلى عملية الاستعادة، يتم تحصيل الرسوم منك استنادًا إلى حجم النسخة الاحتياطية.

لمزيد من التفاصيل والأسعار الدقيقة، يُرجى الاطّلاع على صفحة الأسعار.

قبل البدء

تتطلّب هذه الميزة خطة Blaze المَرِنة.

الأدوار المطلوبة

للحصول على الأذونات اللازمة لإدارة النُسخ الاحتياطية وجداولها الزمنية، اطلب من المشرف منحك دورًا واحدًا أو أكثر من أدوار "إدارة الهوية وإمكانية الوصول" التالية:

  • ‫roles/datastore.owner: وصول كامل إلى قاعدة بيانات Cloud Firestore
  • ‫roles/datastore.backupsAdmin: إذن بالقراءة والكتابة للنسخ الاحتياطية
  • ‫roles/datastore.backupsViewer: إذن بالوصول للقراءة إلى النُسخ الاحتياطية
  • ‫roles/datastore.backupSchedulesAdmin: إذن بالوصول للقراءة والكتابة إلى جداول الاحتفاظ بنسخة احتياطية
  • ‫roles/datastore.backupSchedulesViewer: إذن بالوصول للقراءة إلى جداول الاحتفاظ بنسخة احتياطية
  • ‫roles/datastore.restoreAdmin: أذونات بدء عمليات الاستعادة

إنشاء جداول الاحتفاظ بنسخة احتياطية وإدارتها

توضّح الأمثلة التالية كيفية إعداد جدول زمني للاحتفاظ بنسخة احتياطية. لكل قاعدة بيانات، يمكنك ضبط جدول زمني واحد كحد أقصى للاحتفاظ بنسخة احتياطية يوميًا وجدول زمني واحد كحد أقصى للاحتفاظ بنسخة احتياطية أسبوعيًا. لا يمكنك ضبط جداول زمنية متعددة للنسخ الاحتياطي الأسبوعي لأيام مختلفة من الأسبوع.

لا يمكنك ضبط الوقت المحدّد من اليوم للاحتفاظ بنسخة احتياطية. يتم الاحتفاظ بالنُسخ الاحتياطية في أوقات مختلفة كل يوم. بالنسبة إلى جداول النسخ الاحتياطي الأسبوعية، يمكنك ضبط يوم من الأسبوع لإجراء عملية نسخ احتياطي.

إنشاء جدول زمني للاحتفاظ بنسخة احتياطية

استخدِم إحدى الأدوات التالية لإنشاء جدول زمني للاحتفاظ بنسخة احتياطية.

إنشاء جدول زمني يومي للاحتفاظ بنسخة احتياطية

Google Cloud Console
  1. في وحدة تحكّم Google Cloud، انتقِل إلى صفحة قواعد البيانات.

    الانتقال إلى قواعد البيانات

  2. في قائمة قواعد البيانات، ابحث عن صف قاعدة البيانات. في عمود النُسخ الاحتياطية المجدوَلة، انقر على عرض النُسخ الاحتياطية أو تعديل الإعدادات، حسب توفّر جدول زمني للاحتفاظ بنسخة احتياطية.
  3. انقر على تعديل لتعديل إعدادات الاستجابة للكوارث.
  4. ضَع علامة في مربّع الاختيار يوميًا، واضبط فترة الاحتفاظ بالبيانات، ثم انقر على حفظ.
Firebase CLI
لإنشاء جدول زمني للاحتفاظ بنسخة احتياطية من قاعدة بيانات، استخدِم الأمر firebase firestore:databases:backups:schedules:create. لإنشاء جدول زمني يومي للاحتفاظ بنسخة احتياطية، اضبط العلامة --recurrence على DAILY:
firebase firestore:backups:schedules:create \
--database 'DATABASE_ID' \
--recurrence 'DAILY' \
--retention RETENTION_PERIOD

استبدِل ما يلي:

  • DATABASE_ID: رقم تعريف قاعدة البيانات المطلوب الاحتفاظ بنسخة احتياطية منها اضبطه على '(default)' لقاعدة البيانات التلقائية.
  • ‫RETENTION_PERIOD: اضبط هذه السمة على قيمة تصل إلى 14 أسبوعًا (14w).
Terraform
لإنشاء جدول زمني يومي للاحتفاظ بنسخة احتياطية، أنشئ مورد google_firestore_backup_schedule.
resource "google_firestore_backup_schedule" "daily-backup" {
  project  = PROJECT_ID
  database = DATABASE_ID

  retention = RETENTION_PERIOD_SECONDS

  daily_recurrence {}
}

استبدِل ما يلي:

  • ‫PROJECT_ID: معرّف المشروع
  • DATABASE_ID: رقم تعريف قاعدة البيانات المطلوب الاحتفاظ بنسخة احتياطية منها اضبطه على '(default)' لقاعدة البيانات التلقائية.
  • يمكنك أيضًا استخدام مرجع مورد لمورد Terraform من النوع google_firestore_database.
  • ‫RETENTION_PERIOD_SECONDS: اضبط هذه السمة على قيمة بالثواني، متبوعة بالحرف "s". الحدّ الأقصى للقيمة هو 8467200s (14 أسبوعًا).

إنشاء جدول زمني أسبوعي للاحتفاظ بنسخة احتياطية

Google Cloud Console
  1. في وحدة تحكّم Google Cloud، انتقِل إلى صفحة قواعد البيانات.

    الانتقال إلى قواعد البيانات

  2. في قائمة قواعد البيانات، ابحث عن صف قاعدة البيانات. في عمود النُسخ الاحتياطية المجدوَلة، انقر على عرض النُسخ الاحتياطية أو تعديل الإعدادات، حسب توفّر جدول زمني للاحتفاظ بنسخة احتياطية.
  3. انقر على تعديل لتعديل إعدادات الاستجابة للكوارث.
  4. ضَع علامة في المربّع أسبوعيًا، واختَر يومًا للاحتفاظ بنسخة احتياطية، واضبط فترة الاحتفاظ بالبيانات، ثم انقر على حفظ.
Firebase CLI
لإنشاء جدول زمني أسبوعي للاحتفاظ بنسخة احتياطية، اضبط العلامة --recurrence على WEEKLY واختَر --day-of-week:
firebase firestore:backups:schedules:create \
--database 'DATABASE_ID' \
--recurrence 'WEEKLY' \
--retention RETENTION_PERIOD
--day-of-week DAY
استبدِل ما يلي:
  • DATABASE_ID: رقم تعريف قاعدة البيانات المطلوب الاحتفاظ بنسخة احتياطية منها اضبطه على '(default)' لقاعدة البيانات التلقائية.
  • ‫RETENTION_PERIOD: اضبط هذه السمة على قيمة تصل إلى 14 أسبوعًا (14w).
  • DAY: يوم الأسبوع الذي يتم فيه الاحتفاظ بنسخة احتياطية اضبطه على أحد الخيارات التالية:
    • ‫SUNDAY للأحد
    • MONDAY يوم الاثنين
    • ‫TUESDAY ليوم الثلاثاء
    • ‫WEDNESDAY ليوم الأربعاء
    • ‫THURSDAY للخميس
    • FRIDAY ليوم الجمعة
    • ‫SATURDAY للسبت
Terraform
لإنشاء جدول زمني أسبوعي للاحتفاظ بنسخة احتياطية، أنشئ مورد google_firestore_backup_schedule.
resource "google_firestore_backup_schedule" "weekly-backup" {
  project  = PROJECT_ID
  database = DATABASE_ID

  retention = RETENTION_PERIOD_SECONDS

  weekly_recurrence {
    day = DAY
  }
}

استبدِل ما يلي:

  • ‫PROJECT_ID: معرّف المشروع
  • DATABASE_ID: رقم تعريف قاعدة البيانات المطلوب الاحتفاظ بنسخة احتياطية منها اضبطه على '(default)' لقاعدة البيانات التلقائية.
  • يمكنك أيضًا استخدام مرجع مورد لمورد Terraform من النوع google_firestore_database.
  • ‫RETENTION_PERIOD_SECONDS: اضبط هذه السمة على قيمة بالثواني، متبوعة بالحرف "s". الحدّ الأقصى للقيمة هو 8467200s (14 أسبوعًا).
  • DAY: يوم الأسبوع الذي يتم فيه الاحتفاظ بنسخة احتياطية اضبطه على أحد الخيارات التالية:
    • ‫SUNDAY للأحد
    • MONDAY يوم الاثنين
    • ‫TUESDAY ليوم الثلاثاء
    • ‫WEDNESDAY ليوم الأربعاء
    • ‫THURSDAY للخميس
    • FRIDAY ليوم الجمعة
    • ‫SATURDAY للسبت

عرض قائمة بجداول النُسخ الاحتياطية

لعرض جميع الجداول الزمنية للنسخ الاحتياطي لقاعدة بيانات، استخدِم إحدى الطرق التالية:

Google Cloud Console
  1. في وحدة تحكّم Google Cloud، انتقِل إلى صفحة قواعد البيانات.

    الانتقال إلى قواعد البيانات

  2. في قائمة قواعد البيانات، ابحث عن صف قاعدة البيانات. في عمود النُسخ الاحتياطية المجدوَلة، انقر على عرض النُسخ الاحتياطية أو تعديل الإعدادات، حسب توفّر جدول زمني للاحتفاظ بنسخة احتياطية.
  3. ستفتح صفحة التعافي من الكوارث. توضّح هذه الصفحة جداول النُسخ الاحتياطية وتعرض النُسخ الاحتياطية المتاحة.
Firebase CLI
استخدِم الأمر firebase firestore:backups:schedules:list.
firebase firestore:backups:schedules:list \
--database 'DATABASE_ID'
استبدِل DATABASE_ID بمعرّف قاعدة البيانات. استخدِم '(default)' لقاعدة البيانات التلقائية.

وصف الجدول الزمني للاحتفاظ بنسخة احتياطية

لاسترداد معلومات عن جدول زمني للاحتفاظ بنسخة احتياطية، استخدِم إحدى الطرق التالية:

Google Cloud Console
  1. في وحدة تحكّم Google Cloud، انتقِل إلى صفحة قواعد البيانات.

    الانتقال إلى قواعد البيانات

  2. في قائمة قواعد البيانات، ابحث عن صف قاعدة البيانات. في عمود النُسخ الاحتياطية المجدوَلة، انقر على عرض النُسخ الاحتياطية أو تعديل الإعدادات، حسب توفّر جدول زمني للاحتفاظ بنسخة احتياطية.
  3. ستفتح صفحة التعافي من الكوارث. توضّح هذه الصفحة جداول النُسخ الاحتياطية وتعرض النُسخ الاحتياطية المتاحة.
gcloud
استخدِم الأمر gcloud firestore backups schedules describe:
gcloud firestore backups schedules describe \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID
استبدِل ما يلي:
  • DATABASE_ID: رقم تعريف قاعدة البيانات المطلوب الاحتفاظ بنسخة احتياطية منها اضبطه على '(default)' لقاعدة البيانات التلقائية.
  • BACKUP_SCHEDULE_ID: معرّف جدول الاحتفاظ بنسخة احتياطية يمكنك عرض رقم تعريف كل جدول زمني للاحتفاظ بنسخة احتياطية عند إدراج جميع الجداول الزمنية للاحتفاظ بنسخة احتياطية.

تعديل جدول زمني للاحتفاظ بنسخة احتياطية

لتعديل فترة الاحتفاظ بالبيانات في جدول زمني للاحتفاظ بنسخة احتياطية، استخدِم إحدى الطرق التالية:

Google Cloud Console
  1. في وحدة تحكّم Google Cloud، انتقِل إلى صفحة قواعد البيانات.

    الانتقال إلى قواعد البيانات

  2. في قائمة قواعد البيانات، ابحث عن صف قاعدة البيانات. في عمود النُسخ الاحتياطية المجدوَلة، انقر على عرض النُسخ الاحتياطية أو تعديل الإعدادات.
  3. انقر على تعديل لتعديل إعدادات الاستجابة للكوارث.
  4. عدِّل إعدادات جدول الاحتفاظ بنسخة احتياطية، ثم انقر على حفظ.
Firebase CLI
استخدِم الأمر firebase firestore:backups:schedules:update:
firebase firestore:backups:schedules:update \
BACKUP_SCHEDULE \
--retention RETENTION_PERIOD
استبدِل ما يلي:

يمكنك تعديل فترة الاحتفاظ بالبيانات في جدول زمني للاحتفاظ بنسخة احتياطية، ولكن لا يمكنك تعديل تكرارها. إذا كنت بحاجة إلى جدول زمني للاحتفاظ بنسخة احتياطية بتكرار مختلف، احذف الجدول الزمني القديم إذا لم تعُد بحاجة إليه وأنشئ جدولاً زمنيًا جديدًا بالتكرار المفضّل.

حذف جدول نسخ احتياطي

لحذف جدول زمني للاحتفاظ بنسخة احتياطية، استخدِم إحدى الطرق التالية:

Google Cloud Console
  1. في وحدة تحكّم Google Cloud، انتقِل إلى صفحة قواعد البيانات.

    الانتقال إلى قواعد البيانات

  2. في قائمة قواعد البيانات، ابحث عن صف قاعدة البيانات. في عمود النُسخ الاحتياطية المجدوَلة، انقر على عرض النُسخ الاحتياطية أو تعديل الإعدادات، حسب توفّر جدول زمني للاحتفاظ بنسخة احتياطية.
  3. انقر على تعديل لتعديل إعدادات الاستجابة للكوارث.
  4. عدِّل إعدادات جدول الاحتفاظ بنسخة احتياطية، ثم انقر على حفظ.
Firebase CLI
استخدِم الأمر firebase firestore:backups:schedules:delete:
firebase firestore:backups:schedules:delete \
BACKUP_SCHEDULE
استبدِل ما يلي:

يُرجى العِلم أنّ حذف جدول زمني للاحتفاظ بنسخة احتياطية لن يؤدي إلى حذف النُسخ الاحتياطية التي تم إنشاؤها من خلال هذا الجدول الزمني. يمكنك الانتظار حتى تنتهي صلاحيتها بعد فترة الاحتفاظ بالبيانات، أو لحذف نسخة احتياطية يدويًا، يُرجى الاطّلاع على حذف النسخة الاحتياطية.

إدارة النُسخ الاحتياطية

عرض قائمة بالنُسخ الاحتياطية

لإدراج النُسخ الاحتياطية المتاحة، استخدِم إحدى الطرق التالية:

Google Cloud Console
  1. في وحدة تحكّم Google Cloud، انتقِل إلى صفحة قواعد البيانات.

    الانتقال إلى قواعد البيانات

  2. في قائمة قواعد البيانات، ابحث عن صف قاعدة البيانات. في عمود النُسخ الاحتياطية المجدوَلة، انقر على عرض النُسخ الاحتياطية أو تعديل الإعدادات، حسب توفّر جدول زمني للاحتفاظ بنسخة احتياطية.
  3. انقر على تعديل لتعديل إعدادات الاستجابة للكوارث.
  4. عدِّل إعدادات جدول الاحتفاظ بنسخة احتياطية، ثم انقر على حفظ.
Firebase CLI
استخدِم الأمر firebase firestore:backups:list:
firebase firestore:backups:list
لعرض النُسخ الاحتياطية من موقع جغرافي معيّن فقط، استخدِم العلامة --location:
firebase firestore:backups:list \
--location=LOCATION
يجب استبدال LOCATION باسم موقع جغرافي في Cloud Firestore.

وصف النسخة الاحتياطية

لعرض تفاصيل حول نسخة احتياطية، استخدِم إحدى الطرق التالية:

Google Cloud Console
  1. في وحدة تحكّم Google Cloud، انتقِل إلى صفحة قواعد البيانات.

    الانتقال إلى قواعد البيانات

  2. في قائمة قواعد البيانات، ابحث عن صف قاعدة البيانات. في عمود النُسخ الاحتياطية المجدوَلة، انقر على عرض النُسخ الاحتياطية أو تعديل الإعدادات، حسب توفّر جدول زمني للاحتفاظ بنسخة احتياطية.
  3. ستفتح صفحة التعافي من الكوارث. توضّح هذه الصفحة جداول النُسخ الاحتياطية وتعرض النُسخ الاحتياطية المتاحة.
Firebase CLI
استخدِم الأمر firebase firestore:backups:get:
firebase firestore:backups:get BACKUP
استبدِل ما يلي:

حذف النسخة الاحتياطية

لحذف نسخة احتياطية، استخدِم إحدى الطرق التالية.

Google Cloud Console
  1. في وحدة تحكّم Google Cloud، انتقِل إلى صفحة قواعد البيانات.

    الانتقال إلى قواعد البيانات

  2. في قائمة قواعد البيانات، ابحث عن صف قاعدة البيانات. في عمود النُسخ الاحتياطية المجدوَلة، انقر على عرض النُسخ الاحتياطية أو تعديل الإعدادات، حسب توفّر جدول زمني للاحتفاظ بنسخة احتياطية. ستفتح صفحة التعافي من الكوارث. توضّح هذه الصفحة جداول النُسخ الاحتياطية وتعرض النُسخ الاحتياطية المتاحة.
  3. في جدول النُسخ الاحتياطية، ابحث عن صف نسخة احتياطية، وفي عمود الإجراءات، انقر على عرض المزيد()، ثم انقر على حذف.
  4. أكِّد الإجراء باستخدام حقل النص وانقر على حذف.
Firebase CLI
استخدِم الأمر firebase firestore:backups:delete:
firebase firestore:backups:delete \
BACKUP
استبدِل ما يلي:

استعادة البيانات من نسخة احتياطية لقاعدة بيانات

تؤدي عملية الاستعادة إلى كتابة البيانات من نسخة احتياطية إلى قاعدة بيانات Cloud Firestore جديدة.

لبدء عملية استعادة، استخدِم إحدى الطرق التالية:

Google Cloud Console
  1. في وحدة تحكّم Google Cloud، انتقِل إلى صفحة قواعد البيانات.

    الانتقال إلى قواعد البيانات

  2. في قائمة قواعد البيانات، ابحث عن صف قاعدة البيانات. في عمود النُسخ الاحتياطية المجدوَلة، انقر على عرض النُسخ الاحتياطية أو تعديل الإعدادات، حسب توفّر جدول زمني للاحتفاظ بنسخة احتياطية. ستفتح صفحة التعافي من الكوارث. توضّح هذه الصفحة جداول النُسخ الاحتياطية وتعرض النُسخ الاحتياطية المتاحة.
  3. في جدول النُسخ الاحتياطية، ابحث عن صف نسخة احتياطية، وفي عمود الإجراءات، انقر على عرض المزيد()، ثم انقر على استعادة باستخدام Cloud Shell.
  4. ستفتح لوحة "Cloud Shell" مع أمر "gcloud CLI" لاستعادة البيانات من النسخة الاحتياطية المحدّدة. استبدِل ID_OF_NEW_DATABASE بمعرّف قاعدة البيانات وشغِّل الأمر.

    يؤدي تشغيل الأمر إلى عرض ردّ يتضمّن مزيدًا من المعلومات حول العملية. ستظهر قاعدة البيانات قريبًا في قائمة قواعد البيانات. ستستغرق عملية الاستعادة بعض الوقت ويجب إكمالها قبل أن تصبح قاعدة البيانات متاحة.

Firebase CLI
استخدِم الأمر firebase firestore:databases:restore:
firebase firestore:databases:restore \
--backup 'BACKUP' \
--database 'DATABASE_ID'
استبدِل ما يلي:
  • ‫BACKUP: اسم المورد الكامل لنسخة احتياطية يمكنك الاطّلاع على اسم كل نسخة احتياطية عند عرض قائمة بجميع النُسخ الاحتياطية.
  • DATABASE_ID: معرّف قاعدة البيانات الجديدة لا يمكنك استخدام معرّف قاعدة بيانات مستخدَم حاليًا.

القيود

لا تؤدي عملية الاستعادة إلى استعادة بيانات بحث App Engine أو كيانات blob من قاعدة بيانات (default). هذه البيانات صالحة فقط لقاعدة بيانات (default)، ولن تكون مفيدة إذا استعدت من (default) إلى قاعدة بيانات لا تتوافق مع هذه البيانات، لذلك يتم استبعادها من النُسخ الاحتياطية.

ما يجب فعله بعد الاستعادة

بعد الانتهاء من الاستعادة، عليك إجراء ما يلي:

  • تأكَّد من تطبيق عناصر التحكّم المناسبة في "إدارة الهوية وإمكانية الوصول" على قاعدة بياناتك الجديدة.

  • إذا كنت قد استخدمت سابقًا سياسات TTL، أعِد تطبيقها على قاعدة البيانات الجديدة. لا يتم تضمين سياسات TTL في النُسخ الاحتياطية ولا تتم إعادة تطبيقها تلقائيًا على قواعد البيانات التي تمت استعادتها.