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

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

تتيح لك النسخ الاحتياطية تكوين جداول النسخ الاحتياطي لإجراء نسخ احتياطية يومية أو أسبوعية لقاعدة البيانات المحددة. يمكنك بعد ذلك استخدام هذه النسخ الاحتياطية لاستعادة البيانات إلى قاعدة بيانات جديدة.

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

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

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

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

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

التكاليف

عند استخدام النسخ الاحتياطية، سيتم محاسبتك على ما يلي:

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

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

قبل ان تبدأ

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

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

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

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

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

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

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

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

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

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

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

لإنشاء جدول نسخ احتياطي يومي، اضبط علامة --recurrence على daily :

gcloud alpha firestore backups schedules create \
--database='DATABASE_ID' \
--recurrence=daily \
--retention=RETENTION_PERIOD

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

  • DATABASE_ID : معرف قاعدة البيانات المراد نسخها احتياطيًا. اضبط على (default) لقاعدة البيانات الافتراضية.
  • RETENTION_PERIOD : لتكرار النسخ الاحتياطي daily ، قم بتعيين هذا على قيمة تصل إلى 7 أيام ( 7d ). إذا قمت بتعيين تكرار النسخ الاحتياطي weekly ، فاضبط هذا على قيمة تصل إلى 14 أسبوعًا ( 14w ).

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

لإنشاء جدول نسخ احتياطي أسبوعي، اضبط علامة --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 : لتكرار النسخ الاحتياطي weekly ، قم بتعيين هذا على قيمة تصل إلى 14 أسبوعًا ( 14w ).
  • DAY : اليوم من الأسبوع الذي سيتم فيه أخذ النسخة الاحتياطية. اضبط على أحد الإجراءات التالية:
    • SUN ليوم الأحد
    • MON ليوم الاثنين
    • الثلاثاء TUE الثلاثاء
    • الأربعاء WED الأربعاء
    • THU
    • FRI ليوم الجمعة
    • SAT ليوم السبت

قائمة جداول النسخ الاحتياطي

لسرد جميع جداول النسخ الاحتياطي لقاعدة بيانات، استخدم أمر gcloud alpha firestore backups schedules list . يقوم هذا الأمر بإرجاع معلومات حول كافة جداول النسخ الاحتياطي.

gcloud alpha firestore backups schedules list \
--database='DATABASE_ID'

استبدل DATABASE_ID بمعرف قاعدة البيانات. استخدم (default) لقاعدة البيانات الافتراضية.

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

لاسترداد معلومات حول جدول النسخ الاحتياطي، استخدم الأمر 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 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 : إذا قمت بتعيين تكرار النسخ الاحتياطي daily ، فاضبط هذا على قيمة تصل إلى 7 أيام ( 7d ). إذا قمت بتعيين تكرار النسخ الاحتياطي weekly ، فاضبط هذا على قيمة تصل إلى 14 أسبوعًا ( 14w ).

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

لحذف جدول النسخ الاحتياطي، استخدم أمر 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 : معرف جدول النسخ الاحتياطي. يمكنك عرض معرف كل جدول نسخ احتياطي عند إدراج كافة جداول النسخ الاحتياطي .

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

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

قائمة النسخ الاحتياطية

لسرد النسخ الاحتياطية المتاحة، استخدم أمر 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.

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

لعرض تفاصيل حول النسخة الاحتياطية، استخدم الأمر gcloud alpha firestore backups describe الأمر:

gcloud alpha firestore backups describe \
--location=LOCATION \
--backup=BACKUP_ID

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

لحذف نسخة احتياطية، استخدم أمر gcloud alpha firestore backups delete :

gcloud alpha firestore backups delete \
--location=LOCATION \
--backup=BACKUP_ID

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

تقوم عملية الاستعادة بكتابة البيانات من النسخة الاحتياطية إلى قاعدة بيانات Cloud Firestore الجديدة. لبدء عملية الاستعادة، استخدم أمر 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