PostgreSQL 15 更新

所以你在某个地方将 postgres 端口从 5432 改成了 50432?(或者也许是迁移代码这么做的,而我从未注意到)。

也许按照 OP 的建议切换到 postgres13 模板?如果可行,我会做的是迁移到一个新服务器,避免整个迁移到新 postgres 版本的问题,只需将数据库恢复到新服务器即可。

2 个赞

我没改过,而且那个套接字确实存在,所以……:person_shrugging:

我现在这么做了,但我认为这从长远来看是个坏主意。

我会告诉负责服务器的人。

2 个赞

所以也许它运行了两个 postgres 来进行迁移。

没错,但我很高兴你回来了!

1 个赞

我的 Discourse 分区没有足够的空间来执行此升级。但是,我在另一个驱动器上有足够的空间。有没有办法将其用于临时存储?

1 个赞

无论如何,现在可能是进行操作系统升级的时候了,而且迁移到全新的虚拟机更容易,需要的停机时间更少,如果出现问题,你仍然可以拥有一个正常运行的服务器。

如果你有一个单独的数据容器,你可以尝试将所有/var/discourse/shared/data移动到另一个分区,并相应地调整你的YML中的卷。

如果你没有单独的容器,你可以做类似的事情,只是更复杂。

2 个赞

我遇到了类似(相同?)的问题。你检查过提到的日志吗?

在我的情况下:当我更新时,我首先遇到了一个问题,即应用程序(在我的例子中是仅 Web 版)容器无法重新构建,因为我添加了 rss-polling 作为自定义插件,这似乎与新的默认设置冲突。删除该插件后,它就可以工作了。

但是,它遇到了缺少向量扩展的问题。这是因为我有一段时间没有重新构建数据容器了。我设法将其更新到了 13 版本,但现在我卡在了运行 13 版本上,当我将 data.yaml 更改为 postgres.template 或 postgres.15.template 时,迁移失败了。

最初它因“不干净的关机”而失败,并且根据上面的提示,我解决了这个问题。但现在迁移失败了,因为它似乎缺少 13 版本的安装?这是否与 /shared 目录中的某些残留文件有关?(我已经尝试清理 postgres_new 目录)。


-----------------------------------------------------------------
  pg_upgrade 于 Fri Oct 17 09:54:37 2025 运行
-----------------------------------------------------------------

命令:“/usr/lib/postgresql/13/bin/pg_ctl” -w -l “/shared/postgres_data_new/pg_upgrade_output.d/20251017T095437.518/log/pg_upgrade_server.log” -D “/shared/postgres_data” -o “-p 50432 -b -c listen_addresses='' -c unix_socket_permissions=0700 -c unix_socket_directories='/var/lib/postgresql'” start >> “/shared/postgres_data_new/pg_upgrade_output.d/20251017T095437.518/log/pg_upgrade_server.log” 2>&1
等待服务器启动....2025-10-17 09:54:37.744 UTC [1900] LOG:  正在启动 PostgreSQL 13.22 (Debian 13.22-1.pgdg12+1) 在 x86_64-pc-linux-gnu 上,由 gcc (Debian 12.2.0-14+deb12u1) 12.2.0 编译,64 位
2025-10-17 09:54:37.749 UTC [1900] LOG:  正在监听 Unix 套接字“/var/lib/postgresql/.s.PGSQL.50432”
2025-10-17 09:54:37.760 UTC [1900] LOG:  无法打开配置文件“/etc/postgresql/13/main/pg_hba.conf”:No such file or directory
2025-10-17 09:54:37.760 UTC [1900] FATAL:  无法加载 pg_hba.conf
2025-10-17 09:54:37.762 UTC [1900] LOG:  数据库系统已关闭
 停止等待
pg_ctl: 无法启动服务器
请检查日志输出。

我可能会做的是切换回使用旧容器的 PG13(如果你能弄清楚的话),然后进行备份并迁移到新服务器(你很可能需要一个新的操作系统)。

看起来你当前的容器处于某种损坏状态。它是在尝试使用 PG13 模板重建吗?你可能需要将 postgres 备份文件夹移动到 postgres_data 并切换回 13 来让事情重新开始。

我目前使用的是 PG13 容器。我已经多次重建它。我甚至清理了悬空的 _new 目录。每次我尝试转到 15 或官方未版本化的模板时都会失败。如果这个问题不能自行解决,我将很快手动迁移它。我不明白操作系统在这里有什么关系。

我会重构您的卷挂载,以便将整个 Shared 或 shared/postgres 目录放在同一个卷上,这样目录重命名(这是经常需要的)将不再是问题。

它可能与当前问题无关。通常情况下,如果你运行 discourse 的时间足够长,以至于需要升级 postgres,那么你也很可能需要升级操作系统。

迁移到新服务器可以让你几乎零停机地完成迁移,并且不会有陷入某种损坏状态的风险。

另一方面,我用脚本运行的大多数升级(它只是做了这里描述的事情)都进行得很顺利。

我认为你应该切换到未版本化的那个,然后进行两次重建。

我也试过了,但都不行,都失败了。所以我将手动操作。

8 个帖子已拆分到新主题:Trouble with postgres 15 upgrade