في وقت ما حول بداية شهر مارس، فشلت نسخ احتياطية من Discourse في الحدوث.
لم تتغير الإعدادات، رغم أنه قد يكون (وربما كان) هناك ترقية لـ Discourse.
تُنفَّذ النسخ الاحتياطية على التخزين المحلي، وباستثناء تغيير إعداد الحد الأقصى للنسخ الاحتياطية إلى 3 وتكرار النسخ الاحتياطي إلى 3، فإن باقي الإعدادات على قيمها الافتراضية.
يمكنني إجراء نسخة احتياطية يدوية، وتعمل بنجاح، رغم أنني لاحظت عند القيام بذلك أن النسخة الاحتياطية أصبحت الآن بصيغة sql.gz، بينما كانت سابقًا بصيغة tar.gz.
لكن النسخ الاحتياطية التلقائية لا تعمل، أو تبدو وكأنها تعمل، ولا أحصل على أي تقارير عن أخطاء. يظهر في قسم النسخ الاحتياطية رسالة “لا توجد نسخ احتياطية متاحة.” (بما في ذلك النسخة اليدوية التي قمت بها قبل بضعة أيام، والتي اختفت الآن)، وفي Backups ➤ Logs تظهر رسالة “لا توجد سجلات بعد…”.
حاولت إعادة تشغيل الخادم (قطرة Digital Ocean بأكملها)، لكن ذلك لم يؤدِّ إلى استئناف النسخ الاحتياطية التلقائية.
تُظهر النسخة أنني محدّث إلى الإصدار 2.6.3 (أعمل على الفرع المستقر، وليس الفرع الأحدث).
هذا متوقع طالما أن جميع الملفات المرفوعة لديك مخزنة على S3. في هذه الحالة، تكون ملف النسخة الاحتياطية مجرد تصدير مضغوط لقاعدة البيانات.
يرجى الاطلاع على /logs. هل توجد أي أخطاء قد تكون مرتبطة بالنسخ الاحتياطية؟
أيضًا، يرجى التحقق من /u/system/messages/sent لمعرفة ما إذا كان النظام قد أرسل أي رسائل خاصة حول فشل النسخ الاحتياطية. كانت هناك علة منعت المسؤولين من تلقي إشعارات حول تلك الرسائل في بعض الظروف.
من المقلق بعض الشيء أن النسخة الاحتياطية اليدوية قد اختفت أيضًا. لست متأكدًا من كيفية حدوث ذلك نظرًا لأنك قمت بتعيين maximum_backups إلى 3. هل قمت بإعداد مهمة مجدولة (cronjob) أو سكريبت ينقل/يحذف النسخ الاحتياطية أو لا يعمل مع امتداد الملف الجديد (sql.gz بدلاً من tar.gz)؟
هل ملفات النسخ الاحتياطية غير موجودة حقًا؟ ماذا تظهر نتيجة الأمر ls /var/discourse/shared/standalone/backups/default؟
هذا طبيعي. تظهر السجلات فقط مخرجات النسخ الاحتياطية اليدوية.
لقد تحققت للتو، ولم تكن هناك أي تغييرات ذات صلة بكود النسخ الاحتياطي منذ إصدار الإصدار 2.6.
لا يتم تخزين أي من ملفات التحميل الخاصة بي على S3، بل يتم تخزينها جميعًا محليًا.
لا أرى أيًا منها. أواجه الفوضى المعتادة من أخطاء TypeErrors، لكنني دائمًا ما أراها. البحث عن كلمة “backup” لا يجد شيئًا سوى أخطاء TypeErrors المتعلقة بصفحات الويب لمواضيع المنتدى التي تحتوي بالصدفة على كلمة “backup”.
أوه، انظر، هناك مجموعة من رسائل “فشل النسخ الاحتياطي” - لماذا لا أحصل على تنبيهات بشأن هذه؟
حسنًا، لا أعرف سبب عدم تلقيها كالتقارير، لكن هذا يعطي الخطأ:
[2021-04-08 03:35:35] إزالة المجلد المؤقت ‘/var/www/discourse/tmp/backups/default/2021-04-08-033313’…
[2021-04-08 03:35:35] ضغط الأرشيف باستخدام Gzip، قد يستغرق هذا بعض الوقت…
[2021-04-08 03:38:49] استثناء: lib/discourse.rb:92:in `exec’: فشل ضغط الأرشيف.
gzip: /var/www/discourse/public/backups/default/keyboard-maestro-discourse-2021-04-08-033313-v20201116132948.tar.gz: لا يوجد مساحة متبقية على الجهاز
في الواقع، هذا سكريبت خارجي - يقوم بنسخ النسخة الاحتياطية إلى جهاز آخر للتخزين الدائم ثم يحذفها لتوفير مساحة على الخادم (على الرغم من أنه يبدو أن المساحة غير كافية).
إذن، الأسئلة المتبقية:
لماذا لا أحصل على أي تنبيه لهذه رسائل الخطأ؟
لماذا تكون النسخة الاحتياطية اليدوية ملفًا بامتداد .sql.gz بينما النسخة الاحتياطية الفعلية هي ملف .tar.gz (كلاهما يجب أن يتضمن ملفات التحميل، وهي محلية)؟
لماذا تعمل النسخة الاحتياطية اليدوية بينما نفد المساحة في النسخة الاحتياطية التلقائية (ربما مرتبط، ربما لا تتضمن النسخة الاحتياطية اليدوية فعليًا ملفات التحميل، وبالتالي تكون أصغر حجمًا، على الرغم من أنها تبدو بحجم مناسب)؟
والسؤال الواضح - أتساءل كيف سأقوم بإنشاء مساحة إضافية على الخادم؟ [تعديل: حسنًا، تشغيل ./launcher cleanup أطلق 15 جيجابايت من المساحة مما يجب أن يحدث الفرق].
حسنًا، على الأقل الآن أعرف ما هي المشكلة، وأود حقًا معرفة الإجابة على السؤال الأول لأنني يجب أن أسمع عن هذا بطبيعة الحال. إلى من تُرسل هذه الرسائل عبر البريد الإلكتروني أو من يتم تنبيهه بشأن هذه الرسائل؟ كيف يمكنني التأكد من معرفتها في المستقبل؟