نُشغّل PostgreSQL الإصدار 12 لأن ترقية الإصدار 13 تتطلب مساحة قرص أكبر. يبدو أن التوافق مع الإصدار 12 قد تعطل؟ هل هذا متعمد؟ إذا كان كذلك، فهذا يعني أننا لن نتمكن أبدًا من ترقية Discourse مرة أخرى.
نجح تشغيل أمر ./launcher start app في إعادة الموقع إلى العمل، لذا لا توجد مشكلة في الإنتاج حاليًا، لكن عدم القدرة على الترقية حتى في حالات مشكلات الأمان وما شابه سيكون خبرًا سيئًا للغاية بالنسبة لنا.
من ملف app.yml:
- "templates/postgres.12.template.yml"
عند تشغيل أمر ./launcher rebuild app:
FAILED
--------------------
Errno::ENOENT: No such file or directory @ rb_sysopen - /etc/postgresql/13/main/pg_hba.conf
Location of failure: /pups/lib/pups/replace_command.rb:8:in `read'
replace failed with the params {"filename"=>"/etc/postgresql/13/main/pg_hba.conf", "from"=>"/^host.*all.*all.*::1\\/128.*$/", "to"=>"host all all ::/0 md5"}
0ba8112e6efa1ac2dd75af8a1da8eea0937e7aefbca2df28b22d27e9608d1479
** FAILED TO BOOTSTRAP ** يرجى التمرير لأعلى والبحث عن رسائل الأخطاء السابقة، فقد يكون هناك أكثر من خطأ.
قد يساعدك ./discourse-doctor في تشخيص المشكلة.
النسخة قيد التشغيل حاليًا هي 2.8.0.beta4 75b0d6df93.
لماذا لا تقوم بنسخ احتياطي، ثم إنشاء مثيل discourse جديد تمامًا (الذي يجب أن يستخدم postgres 13 افتراضيًا)، واستعادة النسخة الاحتياطية، وإعادة تعيين الخادم في DNS؟
إنه أقل رعبًا من العمل المزعج الذي أود تجنبه، مقترنًا بإبلاغ منتدى بأنهم سيفقدون يومًا أو يومين من المنشورات. أود أن يقول رجال Discourse: ‘بالطبع، ما زلنا نعمل على PG12، هذه مجرد خطأ، سنقوم بإصلاحها’ بشكل مثالي.
سأفحص الأمر فورًا بعد أخذ صورة جديدة لآلة الظاهري الخاصة بي.
من المزعج حقًا أن تتطلب PostgreSQL مساحة قرص هائلة للترقية. لا أواجه هذه المشكلة مع Oracle أو MySQL، حيث يقومان بالترقية مباشرة دون الحاجة إلى مساحة إضافية.
pg_upgrade يوفر خيار --link واحد للسماح بالترقية في المكان.
لقد اخترنا عدم استخدامه في سكريبت الترقية “الصديق للمبتدئين” الخاص بنا، حيث أن 99% من التثبيتات تعمل على آلة افتراضية سحابية يمكنها بسهولة وبكلفة منخفضة توسيع حجم القرص.
لكنه متاح كخيار للأشخاص الذين يفضلون إجراء الترقية يدويًا لتوفير مساحة القرص أثناء العملية.
تم تقديم حلّان؛ كما أتذكر، كان أحدهما يحتاج إلى ثلاثة أضعاف حجم قاعدة البيانات بالكامل، بينما احتاج الآخر إلى ضعف الحجم تقريبًا. إذا كان بالإمكان تنفيذ ذلك في المكان نفسه، فسيكون توثيق ذلك مفيدًا جدًا.