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

تصف هذه الصفحة كيفية استخدام ميزة النسخ الاحتياطية المُجدوَلة من 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 alpha firestore backups schedules create أو الأمر firebase firestore:databases:backups:schedules.

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

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

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

gcloud
لإنشاء جدول زمني أسبوعي للاحتفاظ بنسخة احتياطية، اضبط العلامة --recurrence على weekly:
gcloud alpha 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)' لقاعدة البيانات التلقائية.
  • يمكنك أيضًا استخدام مرجع مورد إلى مورد Terraform من النوع google_firestore_database.
  • RETENTION_PERIOD_SECONDS: اضبط هذه القيمة على قيمة بالثواني، متبوعة بـ "s". الحد الأقصى للقيمة هو 8467200s (14 أسبوعًا).
  • DAY: يوم من الأسبوع يتم فيه الاحتفاظ بنسخة احتياطية اضبط أحد الإعدادات التالية:
    • SUNDAY ليوم الأحد
    • MONDAY ليوم الاثنين
    • TUESDAY يوم الثلاثاء
    • WEDNESDAY يوم الأربعاء
    • THURSDAY يوم الخميس
    • FRIDAY يوم الجمعة
    • SATURDAY ليوم السبت

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

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

gcloud
استخدِم الأمر gcloud alpha firestore backups schedules list.
gcloud alpha 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 alpha firestore backups schedules describe:
gcloud alpha firestore backups schedules describe \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID
استبدِل ما يلي:
  • DATABASE_ID: رقم تعريف قاعدة البيانات المطلوب الاحتفاظ بنسخة احتياطية منها اضبط القيمة على '(default)' لقاعدة البيانات التلقائية.
  • BACKUP_SCHEDULE_ID: رقم تعريف جدول زمني احتياطي يمكنك الاطّلاع على رقم تعريف كل جدول زمني للاحتفاظ بنسخة احتياطية عند إدراج جميع الجداول الزمنية للاحتفاظ بنسخة احتياطية.

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

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

gcloud
استخدام الأمر gcloud alpha firestore backups schedules update:
gcloud alpha 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 alpha firestore backups schedules delete:
gcloud alpha 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 alpha firestore backups list:
gcloud alpha firestore backups list \
--format="table(name, database, state)"
تعمل العلامة --format="table(name, database, state)" على تنسيق النتائج لتكون تنسيقًا أكثر قابلية للقراءة. لإدراج النُسخ الاحتياطية فقط من موقع جغرافي معيّن، استخدِم العلامة --location:
gcloud alpha 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 alpha firestore backups describe:
gcloud alpha firestore backups describe \
--location=LOCATION \
--backup=BACKUP_ID
استبدال ما يلي:
Firebase CLI
استخدِم الأمر firebase firestore:backups:get:
firebase firestore:backups:get BACKUP
استبدِل ما يلي:

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

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

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

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

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

gcloud
استخدام الأمر gcloud alpha firestore databases restore:
gcloud alpha 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: معرّف قاعدة البيانات لقاعدة البيانات الجديدة. لا يمكنك استخدام معرّف قاعدة بيانات قيد الاستخدام من قبل.