تحديث PostgreSQL 15

الترقية على ARM (aarch64) مع إعدادات لغة غير افتراضية

لقد أمضيت بعض الوقت في إصلاح ترقية معيبة على خادم واحد بإعداد حاويتين.

  1. وحدة المعالجة المركزية الخاصة به هي ARM
  2. تم تكوين Discourse باستخدام إعداد اللغة en_UK.UTF-8

خطوة بخطوة، اكتشفت أن:

  1. tianon/postgres-upgrade:13-to-15 لا يعمل على ARM
  2. يتم تخزين تكوين اللغة في share/${CONTAINER}/postgres_data/postgresql.conf

بدأت بالتعليق على جزء env: من حاوية البيانات، لضمان استخدامها لإعدادات اللغة الافتراضية.

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

UPDATE pg_database SET datctype='en_US.UTF-8', datcollate='en_US.UTF-8';

أنا غير متأكد من أن هذه الخطوة مطلوبة، وقد تختلف النتائج من مستخدم لآخر (YMMV). أتركها هنا لمن هم أكثر معرفة للتعليق، و لا أوصي بها على الإطلاق للغات المختلفة!

ثم قمت باستبدال إعداد اللغة في postgresql.conf:

sed -i -e 's/en_GB/en_US/g' shared/data/postgres_data/postgresql.conf
sudo -H -u discourse ./launcher rebuild data
...
UPGRADE OF POSTGRES COMPLETE

:tada:

لا تعتقد أن الأمر كان سهلاً: أنا لا أذكر المسار الطويل لاستكشاف الخيارات، خاصة عندما تدخلت، كانت واجهة المسؤول غير متاحة، وكان آخر نسخة احتياطية قد تم إنشاؤها قبل 6 أيام. كان علي أن أعبث قبل أن أتمكن من الوصول إلى حل مناسب - أو على الأقل، حل يعمل.

آمل أن يوفر هذا بعض الوقت لبعض الأشخاص.

5 إعجابات