我们正在使用 Discourse 和外部数据库,而不是集成的、基于 Docker 的 Postgres。我们最近不得不将 Postgres 集群升级到 14,因此 Discourse 备份一直失败。
日志输出
[2022-01-17 03:38:08] 正在转储数据库的 public schema...
[2022-01-17 03:38:08] pg_dump: error: server version: 14.1 (Ubuntu 14.1-1.pgdg18.04+1); pg_dump version: 13.5 (Debian 13.5-1.pgdg100+1)
[2022-01-17 03:38:08] pg_dump: error: server version mismatch, aborting
[2022-01-17 03:38:08] EXCEPTION: pg_dump failed
有没有办法将容器中的 postgresql-client 13.5-1.pgdg100+1 升级到 14 版本?
1 个赞
我们每升级两个版本就升级一次 Postgres 版本,因为升级数据库需要大量的工程资源。我们目前使用的是 Postgres 13,所以当 Postgres 15.1 发布时(bugfix 点发布),我们将升级到 Postgres 15.1。
1 个赞
我明白,但感谢您指出升级策略——这真的很有用。我们了解有关数据库的工程资源。我喜欢Postgres,但升级我们的集群通常会让我们变成虔诚的天主教徒——事先祈祷很多次,但仍然要付出很多心血和汗水。
2 个赞
gerhard
(Gerhard Schlager)
4
您应该能够通过将适当的 apt-get 命令添加到您的 app.yml 来手动安装所需的 postgresql-client。
3 个赞
这是否会导致应用程序本身的 Ruby Gems 出现任何依赖问题?据我所知,将 apt install 添加为 hook 需要 launcher rebuild app,对吧?如果是这样,我将跳过它,就像我在另一个主题中描述的那样,在另一次可怕的升级中,我们在中国重建应用程序时面临着巨大的问题。这就是为什么我想弄清楚,仅仅进入应用程序然后通过 apt 手动安装是否就能解决问题。
3 个赞
gerhard
(Gerhard Schlager)
6
我建议你在生产环境之前先在暂存站点上进行测试,但我认为 Ruby gem 不会有任何问题。在正在运行的容器中安装它也应该可行。
2 个赞
??? 这需要大量的工程资源 ???
看起来这些简单的命令就可以将 PostgreSQL 数据库从 13.5 更新到 14.1 来解决备份问题…… 祝好
cd /var/discourse
./launcher enter app
sudo apt-get install postgresql