升级失败:PostgreSQL 13 版本... 与 ... 10.12 版本不兼容

我运营着一个小型论坛 themooster.net,基于 Discourse 构建,但已经好几个月没有进行升级了。

我在“管理员”推荐中点击了“更新”,系统提示我需要在命令行提示符下执行升级,并给出了三行命令:

    cd /var/discourse
    git pull
    ./launcher rebuild app

我执行了这三条命令。起初“rebuild app”失败了,因为我的小型 Linode 服务器上可用空间不足 5GB。于是我增加了磁盘空间,之后“rebuild app”似乎正常完成了。

但网站并没有恢复运行。

我四处查看,重启了服务器,仍然无法访问,又进一步排查。

看起来前端 nginx 服务已经正常启动,但当我像普通用户一样通过网页访问论坛时,nginx 前端返回了“502 Bad Gateway”错误。

文件"/var/discourse/shared/standalone/log/var-log/postgres/current"中充满了如下错误信息:

2021-04-17 13:54:37.785 UTC [7095] FATAL: 数据库文件与服务器不兼容
2021-04-17 13:54:37.785 UTC [7095] DETAIL: 数据目录是由 PostgreSQL 13 版本初始化的,与当前版本 10.12(Debian 10.12-2.pgdg100+1)不兼容。

我在以下目录中拥有论坛的良好备份:
/var/discourse/shared/standalone/backups/default

现在我该怎么办?

查看 PostgreSQL 13 更新

我现在就查看您的 PostgreSQL 13 链接,谢谢。

我是否本应或本可以预见到这种复杂性,而不必作为一名全职管理员持续追踪 Discourse 背后关键技术的动态(PostgreSQL、Ruby、Linux 等)?

如果是的话,是否可以在那三行指令(cd /var/discourse; …)之后增加一行:“警告:请先查看<链接>此处,以确认是否有其他适用的信息。”?

如果不是的话,Discourse 应该更明确地说明它并不适合非专业用户使用。

我会再仔细阅读几次您友善链接的 PostgreSQL 13 更新页面。

不过,在最初的几次阅读中……我完全摸不着头脑。我完全不知道该页面的哪些部分可能适用于我的情况(如果有的话)。

例如,那个 PostgreSQL 13 更新页面(我想这是理所当然的)主要聚焦于从 PostgreSQL 12 升级到 13。而我的错误信息是:

The data directory was initialized by PostgreSQL version 13, which is not compatible with this version 10.12 (Debian 10.12-2.pgdg100+1).

其中提到了版本 10.12……这指的是 PostgreSQL 10,还是 PostgreSQL 12?(我通常会将“10.12”理解为主要是 10,而不是 12。)

啊哈——我的文件:

/var/discourse/shared/standalone/postgres_data_old/PG_VERSION

其值为“10”。

因此,上述关于 PostgreSQL 13 的链接,就其适用于从 12 升级到 13 的情况而言,据我所知(其实知之甚少)并不一定相关。

我对这件事感到非常不安……就像在没有指导、未经培训的情况下,于黑暗洞穴中尝试修理现役军用弹药,甚至都不确定自己正在处理的是哪种弹药。

这个评论是我偶然看到的:

https://meta.discourse.org/t/how-do-i-manually-update-discourse-and-docker-image-to-latest/23325/238?u=thepythoniccow

“你应该再次重建。我猜你忽略了关于 PostgreSQL 升级的提示。”

这让我想到,或许应该再试一次“cd /var/discourse; git pull; ./launcher rebuild app”……看来这个“重建”操作是可以多次尝试的。

这次我记录了输出内容。不过,我敢保证,我确实忽略了输出中的大部分信息。仅“./launcher rebuild app”命令就产生了 2020 行输出。要花一个月甚至更久才能搞清楚所有正在运行的程序以及它们的输出信息意味着什么。实际上,我根本无法判断自己是否忽略了输出中的关键信息。

不过……

它成功了!!

我的网站重新上线,运行的是当前版本的软件。

所以今天的经验是: 如果“./launcher rebuild app”命令未能让网站正常运行,那就再试一次。

2 个赞

啊。抱歉,我没想到要告诉你我告诉那个人的话!

:tada: 太棒了!真高兴你搞定了!

是的。这可能是你唯一需要知道的其他事情了。:slight_smile:

很高兴你恢复运行了!

3 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.