تحديث PostgreSQL 18 لمستخدمي الاستضافة الذاتية

هل يمكنك تقديم المزيد من التفاصيل؟ أواجه نفس المشكلة

إعجاب واحد (1)

بالنسبة لأولئك الذين يواجهون نفس المشكلة، هذا ملخص (بواسطة الذكاء الاصطناعي) لما قمت به:
بدء تشغيل PG15 مؤقتًا → تصدير قاعدة البيانات → استخدام PG18 → استعادة النسخة المُصدَّرة

إعجاب واحد (1)

إذن، نعم، هذا الترقية يعتمد على الصور.

إذن، حتى لو اخترت تثبيت إصدار قديم من Discourse، هل ستفرض الصورة الترقية إلى الإصدار 18؟

فهمتُ.

إعجاب واحد (1)

أرى أنك أصلحته، لكن الطريقة التي قدمها ChatGPT، رغم أنها أصلحت الخطأ، إلا أنها محت قاعدة بياناتي، لذا في الأساس لا توجد حسابات، ولا مواضيع أو منشورات.

ولحسن الحظ، كان منتدى التطوير جديدًا نسبيًا، لذا لم يُفقد الكثير.

إعجابَين (2)

بذلنا عناية فائقة لضمان عدم حدوث ذلك اليوم. بعد كل خطوة، كان يخبرني بأنه لن يتم حذف أي شيء، وكنت أعتقد أننا تأكدنا ثلاث مرات من أن جميع البيانات قد تم نقلها قبل أن نوافق على حذف الأشياء التي لم نعد بحاجة إليها.

ولكن لو حدث خطأ، فإن البيانات الوحيدة التي كنت سأفقدُها هي تكوين مكون السمة.

إعجاب واحد (1)

مرحباً، لدي منتدى بقاعدة بيانات كبيرة نسبياً (حوالي 80 جيجابايت). للانتقال من الإصدار 13 إلى الإصدار 15، قمت بتغيير الخادم، وإجراء تثبيت جديد، ثم استعادة البيانات.
هل أنصحونني باتباع نفس النهج؟ (حاولت التحديث المباشر لكن واجهت أخطاء في ترميز الأحرف collation)

في وقت سابق من هذا الموضوع، ذكر فريق الدعم:

إذن، نعم، إنها خيار متاح.

لقد قلتَ بالفعل:

أخطاء في الترتيب؟ ما هو الإصدار الحالي لـ Discourse؟

ربما تنشر الأخطاء التي واجهتها / مخرجات وحدة التحكم.

لكنك لم تنفد المساحة (يوصى بضعف حجم قاعدة البيانات الحالية)؟

مرحباً، لدي مساحة كافية (250 جيجابايت فارغة). كانت المشكلة “عدم تطابق الترتيب الأبجدي” (collation mismatch)، لكن يبدو أن ملف app.yml لا يحتوي على ترميز UTF.

إعجاب واحد (1)

نحاول توفير إعدادات افتراضية منطقية في صور discourse_docker، لكن من المستحيل مراعاة كل حالة استخدام ممكنة. لا تتردد في تخصيص صورك لإبقاء الإصدارات القديمة إذا كنت تفضل ذلك.

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

هذه طريقة صالحة تمامًا إذا كنت تشعر براحة أكبر معها.

إذا تم توليد التحذير أثناء الاستعداد لتصدير قاعدة البيانات القديمة، فلا داعي للقلق. نحن نستخدم الخادم مع مجلد البيانات القديم فقط لأغراض تشغيل أمر pg_dump. عند استعادة النسخة الاحتياطية في الخادم الجديد، يتم إعادة إنشاء الفهارس.

السبب في رؤيتك لذلك هو أننا أصدرنا في الأيام القليلة الماضية إصدارًا جديدًا من الصورة الأساسية يترقى من Debian Bookworm إلى Trixie، مما يغير إصدار glibc. الإعدادات المحلية (Locales) المعتمدة على مزود libc (والذي كنت تستخدمه على الأرجح) ليست مستقرة عبر ترقيات glibc، لذا عندما يبدأ سكريبت الترقية خادم Postgres لتصدير بياناتك القديمة، فإنه يعرض تحذيرات عدم تطابق الترتيب الأبجدي.

عدم تطابق الترتيب الأبجدي هو السبب الكامل وراء قيامنا بالتصدير والاستعادة بدلاً من تشغيل pg_upgrade. بمجرد أن تستخدم قاعدة البيانات C.UTF-8 مع مزود builtin، لن تؤثر ترقيات glibc بعد ذلك على الترتيب الأبجدي.

إعجابَين (2)

أجريت الترقية الليلة وسارت الأمور حسب الخطة. حصلت على نفس تحذيرات ترتيب الأحرف في قاعدة البيانات، ولكن يبدو أنه يجب تجاهلها. شكراً.

إعجابَين (2)

حاولتُ إدراج ما يلي في ملف app.yml

app.yml
templates:

  • “templates/postgres.15.template.yml”
  • “templates/redis.template.yml”
  • “templates/web.template.yml”
  • “templates/web.ratelimited.template.yml”

للتأخير في ترقية الإصدار، لكنني أواجه هذا الخطأ:

Errno::ENOENT: No such file or directory @ rb_sysopen - /etc/postgresql/15/main/postgresql.conf
Location of failure: /usr/local/lib/ruby/gems/3.4.0/gems/pups-1.4.0/lib/pups/replace_command.rb:11:in ‘IO.read’
replace failed with the params {“filename” => “/etc/postgresql/15/main/postgresql.conf”, “from” => “data_directory = ‘/var/lib/postgresql/15/main’”, “to” => “data_directory = ‘/shared/postgres_data’”}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.

يبدو أن حاوية الأساس غير صحيحة، أعتقد ذلك. هل قمت بتشغيل ./launcher rebuild؟ من المفترض أن يؤدي هذا الأمر إلى تنفيذ git pull، لكن يمكنك محاولة تشغيل git pull يدويًا للتحقق مما إذا كان ذلك سيُحدث أي تغيير.

إعجاب واحد (1)