الحذر: عملية نسخ قاعدة البيانات واستعادتها عند الاختبار

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

أدير مثيل PostgreSQL خارجيًا، لذا أفكر في أنني لست بحاجة فعليًا إلى نسخة احتياطية من مثيل Discourse Rails في Docker، بل يكفي فقط أخذ نسخة احتياطية لقاعدة البيانات عبر الخطوات التالية:

النسخ الاحتياطي:

  1. ./launcher stop app
  2. pg_dump -U username -p 12345 -W -F p databasename | xz > ~/backup/database/$(date +"%d-%m-%Y_%H.%M.%S").databasename.pgsql.xz
  3. ./launcher start app
  4. ### استيراد المحتوى ###

في حال سارت الأمور بشكل سيء، الاستعادة:

  1. ./launcher stop app
  2. xzcat ~/backup/database/DATE.databasename.pgsql.xz | psql -U username -p 12345 -W databasename
  3. ./launcher start app

وعندها يجب أن تعود الأمور إلى حالتها الطبيعية والوظيفية… صحيح؟

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

إذا لم تعمل طريقتك، فأنت وحدك في ذلك.

كما أشرت، هذا مخصص لقاعدة بيانات PGSQL خارجية، حيث أنني لا أستخدم النسخة المعبأة في Docker، وللأسف فإن طريقة النسخ الاحتياطي/الاستعادة العادية لا تعمل معي (ربما لأنني أشغل إصدارًا أحدث قليلاً من PGSQL على خادم قاعدة البيانات الكبير).

أوه، نعم. إذا كنت تشغّل PostgreSQL 11، فأنت وحدك المسؤول. أما إذا كنت تشغّل PostgreSQL 10 على قاعدة بيانات خارجية، فيجب أن يكون الأمر على ما يرام.

ولكن اختبره وراجع ما إذا كان يعمل.

سيتم دعم PG11 و PG12 قريبًا جدًا في عملية النسخ الاحتياطي والاستعادة. ابقوا على اطلاع.

مرحباً. هل هم مدعومون الآن؟

نعم! تم الترقية قبل بضعة أشهر.

شكرًا لك! للتوضيح، هل يؤدي استعادة نسخة احتياطية إلى موقع Discourse (مع محتوياته) إلى حذف جميع البيانات تمامًا من مثيل قاعدة بيانات PostgreSQL الخارجية (RDS)؟ وإذا فشل الاستعادة أو انقطع الاتصال، فهل تتعرض بيانات RDS للتلف؟

سيؤدي هذا إلى حذف جميع البيانات من قاعدة بيانات Discourse، وليس غيرها. في حال فشل الاستعادة، ستظل البيانات الحالية موجودة.