فشل الاستعادة - نسخة احتياطية متوافقة مع S3

شكرًا لك @Falco، نقدر ذلك! سار كل شيء بسلاسة تامة :smiley:

لقد قمت بالانتقال إلى خادم جديد، ويبدو أن البقاء على نفس الخادم كان سيكون أمرًا جيدًا أيضًا.

في حال أراد شخص آخر الرجوع إلى هذا لاحقًا، إليك الخطوات بتفصيل أكبر (لاحظ أن إعدادات S3 الخاصة بي كانت موجودة فقط في ملف app.yml كما هو موضح هنا، دون أي تخصيص في إعدادات المسؤول):

  1. في الموقع المصدر، إذا لم يكن هناك استعادة للنسخة السابقة، فعّل خيار ‘تعطيل الرسائل الإلكترونية’ (قد لا يكون ضروريًا) وفعّل وضع القراءة فقط (تذكّر إعادة تفعيل هذه الإعدادات في المثيل الجديد بعد اكتمال الهجرة). قم بإنشاء نسخة احتياطية، وبمجرد اكتمالها، يمكنك إيقاف المثيل القديم أيضًا (./launcher stop app). بغض النظر عما إذا كان هناك استعادة للنسخة السابقة أم لا، قم بتحديث سجلات DNS من نوع A لتشير إلى عنوان IP للخادم الجديد. يمكنك تنفيذ هذه الخطوات بطريقة أكثر أناقة أو بترتيب يقلل من وقت التوقف، لكن وقت التوقف لم يكن مصدر قلق في حالتي (استعادة للنسخة السابقة، ولم يكن المنتدى قد أُطلق بعد).

  2. قم بتثبيت Discourse على الخادم الجديد، وقلّد كل الإعدادات المخصصة في ملف app.yml بما في ذلك إعدادات S3، وتأكد من أن إصدارات Discourse متطابقة أو قريبة جدًا من بعضها.

  3. علّق السطرين التاليين (يمكن ترك إعدادات S3 الأخرى في ملف app.yml كما هي):
    DISCOURSE_S3_BACKUP_BUCKET: BucketName
    DISCOURSE_BACKUP_LOCATION: s3

  4. قم بتنزيل النسخة الاحتياطية المطلوبة يدويًا من خدمة S3 أو خدمة متوافقة مع S3.

  5. انتقل إلى المسار /var/discourse/shared/standalone/backups وأنشئ مجلدًا جديدًا باسم ‘default’ إذا لم يكن موجودًا (لن يكون موجودًا إذا كان التثبيت جديدًا). ثم، وأنت في مجلد النسخ الاحتياطية، قم بتشغيل الأمر التالي (يُغيّر هذا الأمر أذونات المجلد لتطابق ما ستكون عليه عادةً إذا أنشأ Discourse نسخة احتياطية محلية - غير متأكد مما إذا كان هذا ضروريًا):
    chown -R 1000:www-data default

  6. قم برفع النسخة الاحتياطية إلى مجلد backups/default باستخدام عميل SFTP، ولا تُعيد تسمية ملف النسخة الاحتياطية.

  7. أعد بناء التطبيق:
    cd /var/discourse
    ./launcher rebuild app

  8. ادخل إلى التطبيق، فعّل خيار النسخ الاحتياطي واستعد (أعد تسمية BackupFileName.tar.gz):

./launcher enter app
discourse enable_restore
discourse restore BackupFileName.tar.gz
  1. بمجرد الانتهاء، قم بإزالة التعليق عن سطري ملف النسخ الاحتياطي S3 في ملف app.yml من الخطوة 2 وأعد بناء التطبيق.

  2. يمكنك حذف مجلد backups/default المحلي والنسخة الاحتياطية الموجودة بداخله (/var/discourse/shared/standalone/backups).

مرجع: