النسخ الاحتياطي والاستعادة
هيّئ نسخ احتياطية لقاعدة بيانات PostgreSQL لـ IBM Bob المحلي وأدرها واستعدها لحماية بيانات التطبيق ودعم سيناريوهات الاسترداد.
يستخدم IBM Bob المحلي نموذج تكوين نسخ احتياطي مستندًا إلى ConfigMap يفصل عمليات النسخ الاحتياطي عن المورد المخصص (CR) لـ Bob. يُجدوَل تنفيذ مهام النسخ الاحتياطي وإدارتها تلقائيًا عبر Kubernetes CronJobs، مع سياسات استبقاء وإعدادات تخزين قابلة للتكوين.
تُنشئ النسخ الاحتياطية لـ PostgreSQL نسخةً قابلة للاستعادة من قاعدتَي بيانات IBM Bob وKeycloak. يمكن استخدام هذه النسخ لاسترداد البيانات بعد انقطاع الخدمة، أو لترحيل البيانات بين المجموعات، أو لاستعادة حالة قاعدة بيانات صحيحة معروفة سابقًا.
يدعم IBM Bob كلًّا من النسخ الاحتياطي المجدوَل التلقائي والتنفيذ اليدوي للنسخ الاحتياطي.
الميزات الرئيسية
الجدولة التلقائية
تُنفَّذ النسخ الاحتياطية تلقائيًا باستخدام Kubernetes CronJobs. تُعرَّف جداول النسخ الاحتياطي باستخدام تعبيرات cron القياسية، مما يتيح لك تكوين تكرار النسخ الاحتياطي بناءً على المتطلبات التشغيلية ومتطلبات الاسترداد.
إدارة الاستبقاء التلقائية
تُدار سياسة استبقاء النسخ الاحتياطية تلقائيًا للمساعدة في التحكم في استهلاك التخزين. بعد كل نسخة احتياطية ناجحة، تُحذف النسخ القديمة التي تتجاوز حد الاستبقاء المُكوَّن. يحتفظ النظام افتراضيًا بأحدث سبع نسخ احتياطية لكل مجموعة.
دعم النسخ الاحتياطي لمجموعات متعددة
يمكن لتكوين نسخ احتياطي واحد إدارة النسخ الاحتياطية لعدة مجموعات PostgreSQL. يُنشئ المُشغِّل موارد النسخ الاحتياطي المخصصة لكل مجموعة مُكوَّنة ويحافظ عليها، مما يتيح إدارة نسخ احتياطي مركزية عبر النشر بأكمله.
الاكتشاف التلقائي لصورة PostgreSQL
يمكن لنظام النسخ الاحتياطي اكتشاف صورة حاوية PostgreSQL تلقائيًا واستخدامها من مجموعات قواعد البيانات قيد التشغيل. يُلغي هذا الحاجة إلى تحديد إصدار الصورة يدويًا ويساعد في ضمان التوافق بين مهام النسخ الاحتياطي وبيئة قاعدة البيانات المستهدفة.
التكوين المستند إلى ConfigMap
تُخزَّن إعدادات النسخ الاحتياطي في ConfigMap مخصص، منفصل عن المورد المخصص (CR) لـ Bob. يُبسّط هذا الفصل الإدارة التشغيلية ويتيح تعديل جداول النسخ الاحتياطي وإعدادات التخزين وسياسات الاستبقاء باستقلالية عن تكوين نشر التطبيق.
الضغط التلقائي
تُضغَط تفريغات قاعدة البيانات تلقائيًا باستخدام gzip قبل تخزينها. يُقلل الضغط من متطلبات التخزين ويساعد في تحسين استبقاء النسخ الاحتياطية ضمن سعة التخزين المتاحة.
تتبع بيانات وصف النسخ الاحتياطية
تتضمن كل نسخة احتياطية ملف بيانات وصف يحتوي على تفاصيل مثل الطابع الزمني للنسخة الاحتياطية واسم قاعدة البيانات والمضيف والمنفذ وحجم النسخة الاحتياطية. تساعدك هذه المعلومات في التحقق من سلامة النسخة الاحتياطية وتتبع تاريخها وتحديد النسخة الاحتياطية الصحيحة للاستعادة.
ما يُضمَّن في النسخة الاحتياطية
تلتقط النسخ الاحتياطية لقاعدة البيانات جميع كائنات وبيانات قاعدة بيانات PostgreSQL اللازمة لإعادة بناء بيئة قاعدة البيانات.
تشمل النسخ الاحتياطية:
- قواعد بيانات PostgreSQL (إذا كانت مُكوَّنة):
- قاعدة بيانات Bob (
bob) — قاعدة البيانات الأساسية للتطبيق، بما فيها حسابات المستخدمين ومعلومات المصادقة، والمشاريع والمحادثات، ونتائج تحليل الكود، والتكوين والإعدادات الخاصة بالتطبيق. - قاعدة بيانات Keycloak (
app) — قاعدة بيانات Keycloak المستخدمة للمصادقة وإدارة الهوية، بما فيها بيانات اعتماد المستخدمين ومعلومات ملفاتهم الشخصية، وتكوينات OAuth وOpenID Connect (OIDC)، وإعدادات realm، وتكوينات العميل ومزوّد الهوية.
- قاعدة بيانات Bob (
- مخطط قاعدة البيانات — جميع الكائنات اللازمة لإعادة بناء هيكل قاعدة البيانات، بما فيها الجداول والفهارس والقيود؛ والإجراءات المخزَّنة والوظائف؛ والعروض والمحفزات؛ والتسلسلات والأنواع المخصصة.
- بيانات قاعدة البيانات — تستخدم عملية النسخ الاحتياطي
pg_dumpلإنشاء تفريغ كامل لقاعدة بيانات PostgreSQL، بما يلتقط جميع البيانات المخزَّنة في جداول قاعدة البيانات، وجميع الصفوف والسجلات، والكائنات الثنائية الكبيرة (BLOBs) إن وُجدت.
ما لا يُضمَّن في النسخة الاحتياطية
لا تلتقط النسخ الاحتياطية لـ PostgreSQL موارد Kubernetes أو تكوين التطبيق.
يجب إدارة العناصر التالية بشكل منفصل:
- ConfigMaps
- Secrets
- عمليات النشر (Deployments) والخدمات (Services)
- موارد Ingress
- سجلات التطبيق
- بيانات النماذج والتضمينات
- وحدات التخزين الدائمة غير المرتبطة بقاعدة البيانات
معمارية النسخ الاحتياطي
يستخدم IBM Bob الموارد الأصلية لـ Kubernetes لإنشاء النسخ الاحتياطية لقاعدة البيانات وإدارتها.
| المكوّن | الغرض |
|---|---|
| المورد المخصص لـ Bob | يُفعّل عمليات النسخ الاحتياطي أو يوقفها |
| ConfigMap الخاص بالنسخ الاحتياطي | يُعرّف الجداول والتخزين والاستبقاء وقواعد البيانات المستهدفة |
| CronJobs | تُنفّذ النسخ الاحتياطية المجدوَلة |
| مطالبات الوحدات الدائمة | تُخزّن ملفات النسخ الاحتياطية |
| سكريبتات النسخ الاحتياطي | تُنشئ النسخ الاحتياطية وتُدير سياسة الاستبقاء |
تتبع عملية النسخ الاحتياطي هذا السير:
Bob CR (enabled: true) → ConfigMap Discovery → Controller Reconciliation → CronJob Execution- يكتشف المتحكم ConfigMap الذي يحمل التسمية
bob.ibm.com/backup-config: "true". - يُنشئ المتحكم CronJobs وPVCs لكل مجموعة مُكوَّنة.
- تُنفَّذ CronJobs وفق الجدول، وتشغّل
pg_dumpلإنشاء تفريغات SQL مضغوطة. - تُدير سكريبت النسخ الاحتياطي الاستبقاء وتحذف النسخ القديمة تلقائيًا.
- تتضمن كل نسخة احتياطية ملف بيانات وصف يحتوي على الطابع الزمني والحجم ومعلومات قاعدة البيانات.
عند تفعيل النسخ الاحتياطية، يكتشف المُشغِّل تكوين النسخ الاحتياطي تلقائيًا ويُنشئ الموارد المطلوبة ويُجدول مهام النسخ الاحتياطي وفق التكرار المُكوَّن.
هيكل ملفات النسخ الاحتياطي
تُخزَّن ملفات النسخ الاحتياطي في مطالبات وحدات تخزين دائمة (PVCs) مخصصة. لكل مجموعة PostgreSQL مُكوَّنة دليلها الخاص الذي يحتوي على ملفات النسخ الاحتياطي وبيانات الوصف المرتبطة بها.
/backups/
├── bob-db/
│ ├── backup_bob_20260902_020000.sql.gz
│ └── backup_bob_20260902_020000.sql.gz.meta
└── bob-keycloak-db/
├── backup_app_20260902_020000.sql.gz
└── backup_app_20260902_020000.sql.gz.metaتُولّد عملية النسخ الاحتياطي الملفات التالية لكل نسخة احتياطية:
.sql.gz— تفريغ SQL مضغوط (بتنسيق نص عادي، مضغوط بـ gzip).sql.gz.meta— ملف بيانات وصف يحتوي على الطابع الزمني واسم قاعدة البيانات والحجم والمضيف والمنفذ
قدرات الاسترداد
يدعم IBM Bob سيناريوهات استرداد متعددة لمساعدتك في استعادة البيانات والتعافي من الأعطال وترحيل قواعد البيانات بين البيئات:
- استعادة قاعدة البيانات الكاملة — استعادة قاعدة بيانات PostgreSQL بأكملها من ملف نسخة احتياطية.
- الاسترداد لنقطة زمنية محددة — استعادة قاعدة البيانات إلى نسخة احتياطية بعينها عن طريق تحديد ملف النسخة الاحتياطية المطلوب بناءً على طابعه الزمني.
- الترحيل بين المجموعات — استعادة نسخة احتياطية إلى مجموعة PostgreSQL مختلفة، مما يتيح ترحيل قاعدة البيانات بين البيئات.