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

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

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

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

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

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

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

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

التكاليف

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

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

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

قبل البدء

تتطلّب هذه الميزة خطة أسعار Blaze.

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

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

  • roles/datastore.owner: الوصول الكامل إلى قاعدة بيانات Cloud Firestore
  • تتوفّر الأدوار التالية أيضًا ولكن لا تظهر في وحدة تحكّم Google Cloud Platform. استخدام واجهة سطر الأوامر في Google Cloud لإسناد الأدوار التالية:

    • roles/datastore.backupsAdmin: الإذن بالاطّلاع على النُسخ الاحتياطية والكتابة إليها
    • roles/datastore.backupsViewer: الإذن بالاطّلاع على النُسخ الاحتياطية
    • roles/datastore.backupSchedulesAdmin: إمكانية الاطّلاع على الجداول الزمنية للاحتفاظ بنسخة احتياطية والكتابة فيها
    • roles/datastore.backupSchedulesViewer: الاطّلاع على جداول زمنية للاحتفاظ بنسخة احتياطية
    • roles/datastore.restoreAdmin: الأذونات لبدء عمليات الاستعادة

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

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

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

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

لإنشاء جدول زمني احتياطي لقاعدة بيانات، استخدم الأمر gcloud firestore backups schedules create أو الأمر firebase firestore:databases:backups:schedules.

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

gcloud
لإنشاء جدول زمني يومي للاحتفاظ بنسخة احتياطية، اضبط علامة --recurrence على daily:
gcloud firestore backups schedules create \
--database='DATABASE_ID' \
--recurrence=daily \
--retention=RETENTION_PERIOD

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

  • DATABASE_ID: رقم تعريف قاعدة البيانات المطلوب الاحتفاظ بنسخة احتياطية منها ضبط على '(default)' لقاعدة البيانات التلقائية.
  • RETENTION_PERIOD: اضبط هذه القيمة على قيمة تصل إلى 14 أسبوعًا (14w).
Firebase CLI
لإنشاء جدول زمني يومي للاحتفاظ بنسخة احتياطية، اضبط علامة --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)' لقاعدة البيانات التلقائية.
  • يمكنك أيضًا استخدام مرجع مورد مورد ترابيّ من النوع google_firestore_database.
  • RETENTION_PERIOD_SECONDS: اضبط هذه القيمة على قيمة بالثواني، متبوعة بـ "s". الحد الأقصى للقيمة هو 8467200s (14 أسبوعًا).

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

gcloud
لإنشاء جدول زمني أسبوعي للنسخ الاحتياطي، اضبط علامة --recurrence على weekly:
gcloud firestore backups schedules create \
--database='DATABASE_ID' \
--recurrence=weekly \
--retention=RETENTION_PERIOD \
--day-of-week=DAY
استبدِل ما يلي:
  • DATABASE_ID: رقم تعريف قاعدة البيانات المطلوب الاحتفاظ بنسخة احتياطية منها ضبط على '(default)' لقاعدة البيانات التلقائية.
  • RETENTION_PERIOD: اضبط هذه القيمة على قيمة تصل إلى 14 أسبوعًا (14w).
  • DAY: يوم من الأسبوع يتم فيه الاحتفاظ بنسخة احتياطية ضبط على واحد مما يلي:
    • SUN ليوم الأحد
    • MON ليوم الاثنين
    • TUE يوم الثلاثاء
    • WED يوم الأربعاء
    • THU يوم الخميس
    • FRI يوم الجمعة
    • SAT ليوم السبت
Firebase CLI
لإنشاء جدول زمني أسبوعي للنسخ الاحتياطي، اضبط علامة --recurrence على WEEKLY:
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)' لقاعدة البيانات التلقائية.
  • يمكنك أيضًا استخدام مرجع مورد مورد ترابيّ من النوع google_firestore_database.
  • RETENTION_PERIOD_SECONDS: اضبط هذه القيمة على قيمة بالثواني، متبوعة بـ "s". الحد الأقصى للقيمة هو 8467200s (14 أسبوعًا).
  • DAY: يوم من الأسبوع يتم فيه الاحتفاظ بنسخة احتياطية ضبط على واحد مما يلي:
    • SUNDAY ليوم الأحد
    • MONDAY ليوم الاثنين
    • TUESDAY يوم الثلاثاء
    • WEDNESDAY يوم الأربعاء
    • THURSDAY يوم الخميس
    • FRIDAY يوم الجمعة
    • SATURDAY ليوم السبت

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

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

gcloud
استخدِم الأمر gcloud firestore backups schedules list.
gcloud firestore backups schedules list \
--database='DATABASE_ID'
استبدل DATABASE_ID بمعرّف قاعدة البيانات. استخدام '(default)' لقاعدة البيانات التلقائية.
Firebase CLI
استخدِم الأمر firebase firestore:backups:schedules:list.
firebase firestore:backups:schedules:list \
--database 'DATABASE_ID'
استبدل DATABASE_ID بمعرّف قاعدة البيانات. استخدام '(default)' لقاعدة البيانات التلقائية.

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

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

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: رقم تعريف جدول زمني احتياطي إِنْتَ يمكنك الاطّلاع على معرّف كل جدول زمني للنسخ الاحتياطي عند قائمة بجميع الجداول الزمنية للاحتفاظ بنسخة احتياطية

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

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

gcloud
استخدِم الأمر gcloud firestore backups schedules update:
gcloud firestore backups schedules update \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID \
--retention=RETENTION_PERIOD
استبدِل ما يلي:
  • DATABASE_ID: رقم تعريف قاعدة البيانات المطلوب الاحتفاظ بنسخة احتياطية منها ضبط على '(default)' لقاعدة البيانات التلقائية.
  • BACKUP_SCHEDULE_ID: رقم تعريف جدول زمني احتياطي إِنْتَ يمكنك الاطّلاع على معرّف كل جدول زمني للنسخ الاحتياطي عند قائمة بجميع الجداول الزمنية للاحتفاظ بنسخة احتياطية
  • RETENTION_PERIOD: اضبط هذه القيمة على قيمة تصل إلى 14 أسبوعًا (14w).
Firebase CLI
استخدِم الأمر firebase firestore:backups:schedules:update:
firebase firestore:backups:schedules:update \
BACKUP_SCHEDULE \
--retention RETENTION_PERIOD
استبدِل ما يلي:

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

حذف جدول زمني احتياطي

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

gcloud
استخدِم الأمر gcloud firestore backups schedules delete:
gcloud firestore backups schedules delete \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID
استبدِل ما يلي:
  • DATABASE_ID: رقم تعريف قاعدة البيانات المطلوب الاحتفاظ بنسخة احتياطية منها ضبط على '(default)' لقاعدة البيانات التلقائية.
  • BACKUP_SCHEDULE_ID: رقم تعريف جدول زمني احتياطي إِنْتَ يمكنك الاطّلاع على معرّف كل جدول زمني للنسخ الاحتياطي عند قائمة بجميع الجداول الزمنية للاحتفاظ بنسخة احتياطية
Firebase CLI
استخدِم الأمر firebase firestore:backups:schedules:delete:
firebase firestore:backups:schedules:delete \
BACKUP_SCHEDULE
استبدِل ما يلي:

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

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

القوائم الاحتياطية

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

gcloud
استخدِم الأمر gcloud firestore backups list:
gcloud firestore backups list \
--format="table(name, database, state)"
تعمل العلامة --format="table(name, database, state)" على تنسيق الإخراج في صورة بتنسيق أكثر قابلية للقراءة. لإدراج النُسخ الاحتياطية فقط من موقع جغرافي معيّن، استخدِم العلامة --location:
gcloud firestore backups list \
--location=LOCATION \
--format="table(name, database, state)"
استبدِل LOCATION باسم Cloud Firestore. الموقع.
Firebase CLI
استخدِم الأمر firebase firestore:backups:list:
firebase firestore:backups:list
لسرد النُسخ الاحتياطية فقط من موقع جغرافي معيّن، استخدِم العلامة --location:
firebase firestore:backups:list \
--location=LOCATION
استبدِل LOCATION باسم Cloud Firestore. الموقع.

وصف طريقة دفع احتياطية

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

gcloud
استخدِم الأمر gcloud firestore backups describe:
gcloud firestore backups describe \
--location=LOCATION \
--backup=BACKUP_ID
استبدِل ما يلي:
Firebase CLI
استخدِم الأمر firebase firestore:backups:get:
firebase firestore:backups:get BACKUP
استبدِل ما يلي:

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

لحذف نسخة احتياطية، استخدِم إحدى الطرق التالية. تحذير: لا يمكنك استعادة نسخة احتياطية محذوفة.
gcloud
استخدِم الأمر gcloud firestore backups delete:
gcloud firestore backups delete \
--location=LOCATION \
--backup=BACKUP_ID
استبدِل ما يلي:
Firebase CLI
استخدِم الأمر firebase firestore:backups:delete:
firebase firestore:backups:delete \
BACKUP
استبدِل ما يلي:

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

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

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

gcloud
استخدِم الأمر gcloud firestore databases restore:
gcloud firestore databases restore \
--source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \
--destination-database='DATABASE_ID'
استبدِل ما يلي:
  • PROJECT_ID: رقم تعريف مشروعك
  • LOCATION: موقع النسخة الاحتياطية من قاعدة البيانات لموقع قاعدة البيانات الجديدة التي تم إنشاؤها للبيانات التي تمت استعادتها.
  • BACKUP_ID: رقم تعريف نسخة احتياطية يمكنك الاطّلاع على رقم تعريف كل نسخة احتياطية عند إدراج جميع النُسخ الاحتياطية.
  • DATABASE_ID: معرّف قاعدة البيانات الجديد قاعدة البيانات. لا يمكنك استخدام معرّف قاعدة بيانات قيد الاستخدام من قبل.
وستتضمّن النتائج مكوّنات metadata وname وresponse:
metadata:
  '@type': type.googleapis.com/google.firestore.admin.v1.RestoreDatabaseMetadata
  backup: projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID
  database: projects/PROJECT_ID/databases/DATABASE_ID
  operationState: PROCESSING
  progressPercentage:
    completedWork: '20'
    estimatedWork: '100'
  startTime: '2023-12-06T14:20:17.398325Z'
name: projects/PROJECT_ID/databases/DATABASE_ID/operations/operation_uuid
response:
  '@type': type.googleapis.com/google.firestore.admin.v1.Database
  createTime: '2023-12-06T14:20:17.398325Z'
  name: projects/PROJECT_ID/databases/DATABASE_ID
  ...
يحتوي الحقل metadata على مكوِّن progressPercentage، يفصّل التقدم المقدّر لعملية الاستعادة حتى الآن، وعلامة operationState تحدد الحالة العامة للاستعادة. لاسترداد هذه المعلومات مرة أخرى، استخدم gcloud firestore operations list:
gcloud firestore operations list --database=DATABASE_ID
أو باستخدام الحقل name من المخرجات الموضّحة أعلاه، مع gcloud firestore operations describe:
gcloud firestore operations describe OPERATION_NAME
Firebase CLI
استخدِم الأمر firebase firestore:databases:restore:
firebase firestore:databases:restore \
--backup 'BACKUP' \
--database 'DATABASE_ID'
استبدِل ما يلي:
  • BACKUP: اسم المورد الكامل للنسخة الاحتياطية يمكنك عرض اسم كل نسخة احتياطية عند إدراج جميع النُسخ الاحتياطية.
  • DATABASE_ID: معرّف قاعدة البيانات الجديد قاعدة البيانات. لا يمكنك استخدام معرّف قاعدة بيانات قيد الاستخدام من قبل.