Discourse حول postgres 12 يتسبب في فشل الترقيات

نُشغّل 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.

إنه يبحث عن PostgreSQL 13 وليس 12.

{“filename” => “/etc/postgresql/13/main/pg_hba.conf”,}

بالفعل. هذه هي المشكلة.

لماذا لا تقوم بنسخ احتياطي، ثم إنشاء مثيل discourse جديد تمامًا (الذي يجب أن يستخدم postgres 13 افتراضيًا)، واستعادة النسخة الاحتياطية، وإعادة تعيين الخادم في DNS؟

نعم، هذا سيعمل. نحاول بكل قوة تجنب الاضطرار إلى القيام بذلك.

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

إنه أقل رعبًا من العمل المزعج الذي أود تجنبه، مقترنًا بإبلاغ منتدى بأنهم سيفقدون يومًا أو يومين من المنشورات. أود أن يقول رجال Discourse: ‘بالطبع، ما زلنا نعمل على PG12، هذه مجرد خطأ، سنقوم بإصلاحها’ بشكل مثالي.

لا أستطيع أن أرى لماذا هذا ضروري.

  1. إعداد خادم جديد على نطاق فرعي؟

  2. الدخول في وضع القراءة فقط على الخادم الحالي وإنشاء نسخة احتياطية

  3. جلب النسخة الاحتياطية على الخادم الجديد

  4. إعادة تعيين عناوين DNS

  5. إعادة بناء الخادم الجديد مع نطاق فرعي رئيسي لـ Discourse.

هل يمكن أن تستغرق هذه العملية 30 دقيقة؟

لا، أدير منتدى كبيرًا جدًا.

آه! مشكلة لطيفة نتمناها! :slight_smile:

أعتقد، ليس الأمر كما لو أنني أتقاضى راتبًا! :wink:

أوه، فهمت الآن، إنها خطأ تم إدخاله عبر طلب سحب من المجتمع. وبما أننا لا نستخدم PostgreSQL 12 في أي مكان، فقد مرّ دون أن يُلاحظ. امنحني بضع دقائق.

تم الإصلاح في

هل يمكنك المحاولة في إعادة البناء مرة أخرى @Wingtip؟

مع ذلك، لا نستخدم PG12 بعد الآن، لذا قد نُدخل بعض صيغ SQL الحصرية لـ PG13+ في أي وقت ضمن النواة، لذا سيكون من الجيد جدولة الترقية في وقت ما.

سأفحص الأمر فورًا بعد أخذ صورة جديدة لآلة الظاهري الخاصة بي.

من المزعج حقًا أن تتطلب PostgreSQL مساحة قرص هائلة للترقية. لا أواجه هذه المشكلة مع Oracle أو MySQL، حيث يقومان بالترقية مباشرة دون الحاجة إلى مساحة إضافية.

pg_upgrade يوفر خيار --link واحد للسماح بالترقية في المكان.

لقد اخترنا عدم استخدامه في سكريبت الترقية “الصديق للمبتدئين” الخاص بنا، حيث أن 99% من التثبيتات تعمل على آلة افتراضية سحابية يمكنها بسهولة وبكلفة منخفضة توسيع حجم القرص.

لكنه متاح كخيار للأشخاص الذين يفضلون إجراء الترقية يدويًا لتوفير مساحة القرص أثناء العملية.

تم تقديم حلّان؛ كما أتذكر، كان أحدهما يحتاج إلى ثلاثة أضعاف حجم قاعدة البيانات بالكامل، بينما احتاج الآخر إلى ضعف الحجم تقريبًا. إذا كان بالإمكان تنفيذ ذلك في المكان نفسه، فسيكون توثيق ذلك مفيدًا جدًا.

تعديل: نجح الإصلاح، شكرًا لك!

نعم، قمت بنسخ النص ولصقه دون تفكير - آسف وشكرًا لك على إصلاحه!