عند محاولة تشغيل نسخ احتياطي للنظام، أواجه الرسالة التالية: “فشل النسخ الاحتياطي. يرجى التحقق من السجلات.”
ويشير السجل إلى: pg_dump: [archiver (db)] فشل الاتصال بقاعدة البيانات "discoursedb": تعذر الاتصال بالخادم: تم رفض الاتصال
أعتقد أن هناك مشكلتين على الأرجح:
يعمل الخادم البعيد على منفذ غير قياسي.
يعمل PostgreSQL البعيد بإصدار أحدث من PSQL.
عند الدخول إلى التطبيق (/var/discourse/launcher enter app) وتنفيذ نسخ احتياطي يدوي، لاحظت أنه في البداية، دون تعريف المنفذ، ظهرت نفس الرسالة بالضبط:
$ pg_dump -h 123.456.789.101 -U username -W -F t discourse_db > discourse_db_backup.tar
كلمة المرور:
pg_dump: [archiver (db)] فشل الاتصال بقاعدة البيانات "discourse_db": تعذر الاتصال بالخادم: تم رفض الاتصال
هل يعمل الخادم على المضيف "123.456.789.101" ويقبل
اتصالات TCP/IP على المنفذ 5432؟
تم حل هذه المشكلة بسهولة (باستثناء أنني لا أعرف كيف أجبر Discourse على استخدام المنفذ الصحيح في النسخ الاحتياطي)، لكن المشكلة التالية كانت أكثر إثارة للقلق، وهي أننا نستخدم إصدارًا أحدث من PSQL على خادم قاعدة البيانات:
$ pg_dump -h 123.456.789.101 -p 45678 -U username -W -F t discourse_db > discourse_db_backup.tar
كلمة المرور:
pg_dump: إصدار الخادم: 11.5 (Ubuntu 11.5-3.pgdg18.04+1); إصدار pg_dump: 10.10 (Debian 10.10-1.pgdg100+1)
pg_dump: جاري الإلغاء بسبب عدم تطابق إصدار الخادم
ما الذي يمكن فعله في مثل هذه الحالة؟ هل توجد طريقة لجعل نسخ احتياطي النظام الفعلي يعمل في مثل هذه الحالة، أم يجب نسخ Discourse وقاعدة بيانات PostgreSQL احتياطيًا بشكل منفصل؟
إذا كان الخيار الثاني هو الوحيد المتاح، فما هي الطريقة الصحيحة لنسخ البيانات على الأقل احتياطيًا؟ وهل توجد آلية متماسكة مفضلة متاحة للقيام بكليهما في وقت واحد دون الحاجة إلى كتابة سكريبت جديد للقيام بذلك؟
لقد وجدت بعض المناقشات في موضوع آخر يتعلق بشخص لديه حالة قابلة للمقارنة إلى حد ما. الفرق الكبير في حالتي هو أننا نخزن الملفات على الخادم المحلي بدلاً من S3. يمكنني التخلي عن نسخ قاعدة بيانات PostgreSQL احتياطيًا نظرًا لأنها تُنسخ احتياطيًا بشكل مستقل، ومع ذلك لا يزال يتعين عليّ نسخ ما يلي احتياطيًا:
المحتوى المحلي و
إعدادات Discourse
لا يزال لدي رغبة في الحصول على نسخة احتياطية موحدة تجمع بين قاعدة البيانات والمحتوى والإعدادات في مكان واحد، لكنني أتوقع أنك لا تدعم ذلك/لن تدعمه، وبالتالي أرغب على الأقل في تجميع المحتوى والإعدادات في حزمة موحدة.
مثير للاهتمام وغريب. قرأت في مكان ما أن الإصدار 11 مقبول، ولكن باستثناء ذلك، لدي نظام تم نشره بالفعل على الإصدار 11 ولم أواجه أي أخطاء أو مشاكل (باستثناء النسخ الاحتياطي) حتى الآن… الآن جعلتني قلقًا…
أوه، ها نحن ذا، وفقًا لهذا المنشور فإن PostgreSQL 11 “يجب أن يعمل ببساطة.”
نعم. لدي نظامان تم نشرهما على إصدار PostgreSQL 11 أيضًا. يعملان بشكل جيد باستثناء أنني أقوم بنسخ احتياطي مباشر. قمت بترقية PostgreSQL إلى الإصدار 11 داخل الحاوية. سيقومان بإنشاء نسخ احتياطية لكنهما لا يستطيعان استعادتها.
يجب أن يكتفي نظام نسخ احتياطي Discourse بالتحذير وعدم الفشل في حال وجود عدم تطابق في إصدار PostgreSQL. لقد جربت إجراء نسخة احتياطية بنفسي للتو، وبما أنني أيضًا أستخدم خادم PG خارجي، لم يتم إنشاء أي ملف مضغوط على الإطلاق.
حدثت نفس المشكلة لي. قمت بنقل قاعدة بيانات postgresql إلى خادم منفصل وبدأت في تلقي خطأ في النسخ الاحتياطي. وجدت الحل عن طريق حذف وإعادة تثبيت postgresql في دوكر على الخادم الرئيسي.
cd /var/discourse
./launcher enter app
apt-get remove postgresql-client-common
apt-get update
sudo apt-get install postgresql