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

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

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

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

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

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

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

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

التكاليف

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

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

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

قبل البدء

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

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

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

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

    • 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)' لقاعدة البيانات التلقائية.
  • يمكنك أيضًا استخدام مرجع مورد لمحاولة الوصول إلى موارد Terraform من النوع 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)' لقاعدة البيانات التلقائية.
  • يمكنك أيضًا استخدام مرجع مورد لمحاولة الوصول إلى موارد Terraform من النوع 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: رقم تعريف قاعدة بيانات الجديدة. لا يمكنك استخدام معرّف قاعدة بيانات قيد الاستخدام.