使用 Postgres 16 数据库(以及所有 PG>13)备份失败

大家好,我今天遇到了这个问题。症状是大约六天以来我们一直收到备份失败的警报,关键的日志行似乎是:

[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)

我在 Digital Ocean 的一个 Ubuntu 实例上运行 Discourse,使用的是推荐的安装指南。但我使用的是 Digital Ocean 的托管 Postgres 数据库,而不是 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 时都要重复这些步骤之外,还有没有其他解决方案?