الإصدارات المدعومة من PostgreSQL

Is there somewhere a note, which postgresql db versions are supported?

Would be great to have something for each released discourse version - especially if a postgresql version is no longer supported.

Postgres is bundled in with the Docker container for Discourse, so this is generally hands-off. The Discourse team upgrades the Postgres version as new releases come out and they are properly tested. The most recent upgrade was to version 13. You can see the details of that upgrade here:

3 إعجابات

Well, not everyone is using the bundled postgres db.

The current install doc lists Postgres 10+ as the required version:

https://github.com/discourse/discourse/blob/master/docs/INSTALL.md

That said, the only officially supported setups are using Docker containers.

إعجابَين (2)

Yes, the versions of postgres which are “supported” (from a docker build perspective, not all “strongly supported”) are listed in the templates directory of discourse_docker

Having said that, it is highly recommended to move to the latest version of postgres, currently version 13, as soon as you can.

However, if you are running Discourse on a host where you cannot run the latest version because of some local constraint in your organization; the discourse_docker templates directory is a good place to research.

4 إعجابات

التحقق بعد ثلاث سنوات: قالب دوكر لا يزال يقول PG_MAJOR=13، ولكن هناك إصدارات جديدة من PostgreSQL: 14 من عام 2021، و 15 من عام 2022، و 16 من عام 2023.

إذًا، هل التوصية لا تزال باستخدام الإصدار 13 (الذي سينتهي دعمه في عام 2025) بدلاً من أحدث إصدار PostgreSQL 16 (الذي سينتهي دعمه في عام 2028)؟

نعم، بالضبط.

لدينا بعض المواقع التي تعمل بالإصدار 15 بالفعل، ويجب أن ننتقل إلى التحديث من الإصدار 13 العام المقبل.

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

السؤال: ما هو الوضع الحالي هنا؟ أقوم بتشغيل قاعدة بيانات PostgreSQL خارجية وأود ترقية خادم قاعدة البيانات من الإصدار 13. تم إصدار PostgreSQL 16 في 2023-09-14. هل يمكن استخدامه مع Discourse؟ هل ستكون هناك أي خطوات ترحيل مطلوبة لقاعدة البيانات نفسها؟ (بخلاف خطوات الترحيل العامة على جانب الخادم)

لا تزال PostgreSQL 13 هي النسخة المدعومة رسميًا، حيث تم إصدار النسخة 13.15 الشهر الماضي ولا تزال مدعومة.

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

الإصدار 16 لم يتم اختباره على نطاق واسع خارج أجهزة المطورين، ولكن إذا كنت تشعر بالمغامرة وترغب في تجربته ومعرفة ما إذا كان هناك شيء سينكسر، فأخبرنا كيف سارت الأمور!

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

هل تقوم Discourse بأي شيء غير عادي مع Postgres مما قد يشير إلى أن الترقيات إلى إصدارات جديدة من Postgres قد لا تعمل مع تفريغ واستعادة بسيط؟

رفع هذا الموضوع لمعرفة ما إذا كان هناك سبب لمحاولة الترقية إلى PostgreSQL 15 بدلاً من 16 أو 17؟

ومتى يجب أن نتوقع ترقية PostgreSQL

مرحباً يا رفاق، لقد انتقلت للتو إلى AWS RDS PostGre 16.4 ويبدو أنه يعمل.

أنا على إصدار discourse 3.4.0.beta3-dev

لم أضغط على جميع الأزرار بعد :slight_smile: ، ولكن اللوحة نفسها تبدو عاملة، ولكن…

لا يمكنني إنشاء نسخ احتياطية، بسبب

[2024-12-13 08:36:07] التأكد من وجود '/var/www/discourse/tmp/backups/default/2024-12-13-083607'...
[2024-12-13 08:36:07] التأكد من وجود '/var/www/discourse/public/backups/default'...
[2024-12-13 08:36:07] تحديث البيانات الوصفية...
[2024-12-13 08:36:07] تفريغ المخطط العام لقاعدة البيانات...
[2024-12-13 08:36:08] pg_dump: خطأ: إصدار الخادم: 16.4؛ إصدار pg_dump: 13.18 (Debian 13.18-1.pgdg120+1)
[2024-12-13 08:36:08] pg_dump: خطأ: الإلغاء بسبب عدم تطابق إصدار الخادم
[2024-12-13 08:36:08] استثناء: فشل pg_dump

الشيء الغريب هو أنني تمكنت فعليًا من استيراد البيانات باستخدام الآليات الداخلية:

ما فعلته:

  1. إعداد قاعدة البيانات (مستخدم، قاعدة بيانات، منح).
  2. تكوين الإعدادات في app.yml.
  3. إنشاء نسخة احتياطية من داخل discourse.
  4. إعادة بناء التطبيق (تم ترحيل قاعدة البيانات بنجاح → قاعدة البيانات فارغة بعد ذلك).
  5. استعادة النسخة الاحتياطية من داخل الحاوية (launcher enter app, discourse enable_restore, discourse restore …).
  6. الانتهاء (كل شيء كان ناجحًا، وبدا كل شيء يعمل، حتى حاولت إنشاء نسخة احتياطية جديدة :slight_smile: ).

هل هناك أي فرصة لمعالجة هذا بطريقة ما؟

تحياتي،

JP

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

حسنًا يا رفاق، الآن بدأت الأمور تصبح مثيرة للاهتمام.
لم أعمل لبضعة أيام ولم أتحقق من لوحة شركتنا الجديدة.

عندما تحققت اليوم، نجح النسخ الاحتياطي المجدول، ثم حاولت إجراء النسخ الاحتياطي اليدوي مرة أخرى، وفشل ذلك :thinking:

مجدول:

Dumping the public schema of the database...
[2024-12-04 06:02:16] pg_dump: last built-in OID is 16383
[2024-12-04 06:02:16] pg_dump: reading extensions
[2024-12-04 06:02:16] pg_dump: identifying extension members
[2024-12-04 06:02:16] pg_dump: reading schemas
[2024-12-04 06:02:16] pg_dump: reading user-defined tables
[2024-12-04 06:02:16] pg_dump: reading user-defined functions
[2024-12-04 06:02:16] pg_dump: reading user-defined types
......
pg_dump: dumping contents of table "public.themes"
[2024-12-04 06:02:19] pg_dump: processing data for table "public.top_topics"
[2024-12-04 06:02:19] pg_dump: dumping contents of table "public.top_topics"
[2024-12-04 06:02:19] Finalizing backup...
[2024-12-04 06:02:19] Creating archive: scp-talk-2024-12-04-060216-v20241127034553.tar.gz
[2024-12-04 06:02:19] Making sure archive does not already exist...
[2024-12-04 06:02:19] Creating empty archive...
[2024-12-04 06:02:19] Archiving data dump...
[2024-12-04 06:02:19] Archiving uploads...
[2024-12-04 06:02:19] Removing tmp '/var/www/discourse/tmp/backups/default/2024-12-04-060216' directory...
[2024-12-04 06:02:19] Gzipping archive, this may take a while...
[2024-12-04 06:02:19] Executing the after_create_hook for the backup...
[2024-12-04 06:02:19] Deleting old backups...
[2024-12-04 06:02:19] Cleaning stuff up...
[2024-12-04 06:02:19] Removing '.tar' leftovers...
[2024-12-04 06:02:19] Marking backup as finished...
[2024-12-04 06:02:19] Refreshing disk stats...
[2024-12-04 06:02:19] Notifying '<me>' of the end of the backup...

يدوي:

[2024-12-16 10:03:54] '<me>' has started the backup!
[2024-12-16 10:03:54] Marking backup as running...
[2024-12-16 10:03:54] Making sure '/var/www/discourse/tmp/backups/default/2024-12-16-100354' exists...
[2024-12-16 10:03:54] Making sure '/var/www/discourse/public/backups/default' exists...
[2024-12-16 10:03:54] Updating metadata...
[2024-12-16 10:03:54] Dumping the public schema of the database...
[2024-12-16 10:03:54] pg_dump: error: server version: 16.4; pg_dump version: 13.18 (Debian 13.18-1.pgdg120+1)
[2024-12-16 10:03:54] pg_dump: error: aborting because of server version mismatch
[2024-12-16 10:03:54] EXCEPTION: pg_dump failed

هممممم، أي أفكار؟

غريب جداً :frowning:

أؤكد أن الترقية إلى 3.4.0.beta3 مع قاعدة بيانات خارجية تفشل النسخ الاحتياطي.
لدي نسختان 3.4.0.beta3 (tag): 1) مع Postgres-in-Docker (الافتراضي)؛ 2) مع Postgres خارجي (مستضاف ذاتيًا محليًا).
الأول قادر على النسخ الاحتياطي سواء بالجدول الزمني أو يدويًا:

[2024-12-23 11:11:43] Marking backup as running...
[2024-12-23 11:11:44] Making sure '/var/www/discourse/tmp/backups/default/2024-12-23-111143' exists...
[2024-12-23 11:11:44] Making sure '/var/www/discourse/public/backups/default' exists...
[2024-12-23 11:11:44] Updating metadata...
[2024-12-23 11:11:44] Dumping the public schema of the database...
[2024-12-23 11:11:44] pg_dump: last built-in OID is 16383
[2024-12-23 11:11:44] pg_dump: reading extensions
[2024-12-23 11:11:44] pg_dump: identifying extension members
[2024-12-23 11:11:44] pg_dump: reading schemas
...

الثاني يفشل:

[2024-12-21 03:35:21] Marking backup as running...
[2024-12-21 03:35:21] Making sure '/var/www/discourse/tmp/backups/default/2024-12-21-033521' exists...
[2024-12-21 03:35:21] Making sure '/var/www/discourse/public/backups/default' exists...
[2024-12-21 03:35:21] Updating metadata...
[2024-12-21 03:35:21] Dumping the public schema of the database...
[2024-12-21 03:35:22] pg_dump: error: server version: 16.6 (Ubuntu 16.6-0ubuntu0.24.04.1); pg_dump version: 13.18 (Debian 13.18-1.pgdg120+1)
[2024-12-21 03:35:22] pg_dump: error: aborting because of server version mismatch
[2024-12-21 03:35:22] EXCEPTION: pg_dump failed
...
إعجابَين (2)

لقد قمت بالترقية بالأمس وأؤكد فشل النسخ الاحتياطي المجدول بسبب عدم تطابق الإصدار.

يمكنك الإصلاح عن طريق الدخول إلى دوكر وتثبيت عميل postgresql أحدث.

/var/discourse/launcher enter app
apt update
apt install postgresql-client
إعجابَين (2)

يا رفاق،

لقد انتقلت الآن إلى قواعد بيانات PostGre مشفرة في RDS، وكنت أفعل الشيء نفسه بالأمس (كما وصفت في الخطوات السابقة (عمل نسخة احتياطية، تحرير app.yml، إعادة البناء، …) وكان ذلك يعمل بالأمس.

اليوم حاولت ذلك مع PROD والآن أحصل على هذا الخطأ :frowning:

إنشاء وظائف مفقودة في مخطط discourse_functions…
استعادة ملف التفريغ… (قد يستغرق هذا بعض الوقت)
SET
SET
SET
خطأ: معلمة تكوين غير معروفة “transaction_timeout”
استثناء: فشل psql: خطأ: معلمة تكوين غير معروفة “transaction_timeout”

حاولت ذلك مباشرة مع DBeaver في قاعدة البيانات، وهناك أحصل على نفس الخطأ (حتى بالنسبة لقاعدة البيانات تلك، التي كانت تعمل بشكل رائع بالأمس).
كانت النسخ الاحتياطية محدثة في كلتا الحالتين.

هل غيرت أي شيء بين عشية وضحاها؟ :smiley:

شكراً وتحياتي،

WS

مرحباً،

تم التحقق من التفريغ الذي يتم إجراؤه في ملف النسخ الاحتياطي:

يتضمن هذا في الأعلى

SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET transaction_timeout = 0;
SET client_encoding = ‘UTF8’;
SET standard_conforming_strings = on;

المعلمة transaction_timeout غريبة هنا :thinking:
حيث أن

تمت إضافة transaction_timeout في PostgreSQL 17.

كما هو مذكور هنا:

https://pgpedia.info/t/transaction_timeout.html

أحتاج للمساعدة :slight_smile:

شكراً!

مع خالص التقدير،

Wurzelseppi

هل هناك طريقة للقيام بتحديث postgresql-client هذا كجزء آلي من إعادة البناء عن طريق تعديل ملف yaml الخاص بالحاوية؟