فشل النسخ الاحتياطية مع قاعدة بيانات Postgres 16 (وجميع PG أكبر من 13)

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

[2025-06-14 03:30:20] pg_dump: error: aborting because of server version mismatch
[2025-06-14 03:30:20] pg_dump: detail: server version: 16.9; pg_dump version: 15.12 (Debian 15.12-1.pgdg120+1)

أقوم بتشغيل Discourse على أوبونتو يعمل على قطرة Digital Ocean، باستخدام دليل التثبيت الموصى به. لكنني أستخدم قاعدة بيانات Postgres المُدارة من Digital Ocean بدلاً من حاوية postgres. بالنظر إلى قاعدة بياناتي، فهي تعمل بنسخة pg 16. لا أعتقد أنهم قاموا بترقيتها مؤخرًا (ولا أتوقع أن تتم ترقية إصدار رئيسي تلقائيًا على أي حال)، لكنني أرسلت بريدًا إلكترونيًا إلى دعمهم للتحقق مرة أخرى.

على أي حال، قادتني أبحاثي إلى هذه الصفحة. لم أكن متأكدًا من مكان وضع YAML الذي نشره @pfaffman، لذلك قمت بتشغيل الأوامر يدويًا، وفكرت في مشاركتها لأي شخص آخر يتعثر في هذا:

  • cd /var/discourse
  • launcher enter app
  • apt list --installed | grep postgres # للتأكد من أن الإصدار المثبت حاليًا هو 15
  • apt-get update
  • apt-get remove postgresql-client-15
  • apt-get install postgresql-client-16

ثم قمت بتشغيل نسخة احتياطية يدوية على صفحة النسخ الاحتياطي للمسؤول.

يبدو أن هذا قد أصلح المشكلة مؤقتًا، ولكن كما أشار @pfaffman، أتوقع أنه في المرة التالية التي أقوم فيها بترقية Discourse، سيعود إلى postgresql-client-15، وستتوقف النسخ الاحتياطية عن العمل مرة أخرى، مما يتطلب التدخل اليدوي المذكور أعلاه.

هل هناك أي حل لهذه المشكلة بخلاف الاضطرار إلى تكرار هذه الخطوات في كل مرة أقوم فيها بترقية Discourse؟