قوالب Discourse_docker الافتراضية وإصدار PostgreSQL غير متزامنين

مرحباً بالجميع، بينما أبحث في إضافة امتداد “pglogical” إلى قاعدة بيانات Postgres الخاصة بنا، ألاحظ بعض التناقضات بين إصدار Postgres المثبت والإصدار المشار إليه في ملفات قالب وتكوين Postgres.

إصدار Postgres المثبت حاليًا هو v16.2 (تم إصداره في فبراير 2024)، ولكن ملفات التكوين كلها لا تزال مرتبطة بالإصدار v13، على سبيل المثال:

root@ip-172-31-62-223-app:/var/www/discourse# sudo -u postgres psql discourse
psql (16.2 (Debian 16.2-1.pgdg110+2), server 13.14 (Debian 13.14-1.pgdg110+2))
Type "help" for help.

discourse=# SHOW config_file;
               config_file
-----------------------------------------
 /etc/postgresql/13/main/postgresql.conf
(1 row)

أو ملف postgres.template، الذي يصل فقط إلى الإصدار v13.

هذه مشكلة بالنسبة لي حاليًا فقط لأن مكتبة pglogical موجودة في مجلدات v16، ولكن ليس في مجلدات v13. لقد حاولت إنشاء روابط رمزية باستخدام

for i in $(ls /usr/share/postgresql/16/extension/pglogical*); do ln -s $i /usr/share/postgresql/13/extension/$(basename $i); done
ln -s /usr/lib/postgresql/16/lib/pglogical.so /usr/lib/postgresql/13/lib/

ولكن هذا يؤدي فقط إلى هذا الخطأ:

> FATAL: could not load library "/usr/lib/postgresql/13/lib/pglogical.so":/usr/lib/postgresql/13/lib/pglogical.so: undefined symbol: shmem_request_hook

لذلك، فإن ملفات المكتبة ليست بديلاً متطابقًا بين إصدارات Postgres المختلفة.

في النهاية، يبدو أن هناك فجوة بين إصدار Postgres المثبت والإصدار الذي يعتقد مشغل Docker أنه يقوم ببنائه.

هدفي النهائي هنا هو تثبيت pglogical، وسيكون من المثالي العثور على حل يمكن تكراره عند إعادة بناء الحاوية (أي، ملفات أو أسطر يمكن إضافتها بسهولة إلى ملفات القالب). أنا بالتأكيد قادر على القيام بالمزيد من أعمال DevOps اللازمة (حيث إنها متطلب لمؤسستي)، ولكني فقط أتساءل عما إذا كان الآخرون قد واجهوا هذه الفجوة وماذا فعلوا حيال ذلك.

شكراً للقراءة!

سخيف، سخيف، سخيف مني. سبب وجود ملفات pglogical هو أنني قمت بتشغيل

sudo apt-get install postgresql-16-pglogical

لوضعها هناك. (لقد كان يومًا طويلاً من DevOps بالأمس.) تشغيل dpkg -L postgresql-16-pglogical أشار إلى ذلك بالنسبة لي…

تشغيل

sudo apt-get install postgresql-13-pglogical

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

ومع ذلك، أعتقد أن النقطة التي ذكرتها أعلاه حول الإصدارات في discourse_docker و postgres لا تزال قائمة.

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

لاحظ أن psql --version و docker exec data su postgres -c \"echo 'select version();'|psql\"|grep PostgreSQL|cut -d \" \" -f 3 ليسا نفس الشيء.

أعتقد أن الصورة تحتوي على أدوات عميل محدثة (تعمل للأشخاص الذين يشغلون إصدارات أحدث من postgres التي تدعمها Discourse (على الأرجح)) ولم تجبر الجميع على التحديث إلى PG15 أو أيًا كان ما هو مخطط له حتى الآن.

أود أن أشير أيضًا إلى أن إضافة مكتبة pglogical هذه بالتأكيد تتسبب في تعطيل ترقية postgres التي تم تقديمها في يناير في مستودعي discourse + discourse_docker.

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