Postgres 16データベースでバックアップが失敗する (PG>13も含む)

皆さん、こんにちは。今日、この問題に遭遇しました。症状としては、約6日間バックアップが失敗しているというアラートを受け取っており、主要なログ行は次のようでした。

[2025-06-14 03:30:20] pg_dump: error: サーバーのバージョンが一致しないため中止します
[2025-06-14 03:30:20] pg_dump: 詳細: サーバーバージョン: 16.9; pg_dump バージョン: 15.12 (Debian 15.12-1.pgdg120+1)

私はDiscourseをDigital Oceanのドロップレットで実行されているUbuntuで、推奨されるインストールガイドを使用しています。しかし、Postgresコンテナではなく、Digital OceanのマネージドPostgresデータベースを使用しています。データベースを確認したところ、pg 16が実行されています。最近アップグレードされたとは思いませんが(メジャーバージョンのアップグレードが自動で行われるとは期待していません)、念のためサポートにメールで確認しました。

いずれにせよ、私の調査はこのページにつながりました。@pfaffmanが投稿したYAMLをどこに配置すればよいかわからなかったので、手動でコマンドを実行し、この問題に遭遇した他の人のために共有しようと思いました。

  • 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をアップグレードするたびにこれらの手順を繰り返す以外に、この問題に対する解決策はありますか?