面向自托管用户的 PostgreSQL 18 更新

Literate Computing 仪表盘已成功升级了两个独立站点和一个双容器站点,期间未发生任何事故。正如宣传的那样,整个过程与最近几次升级基本相同,主要只需更改变量中的目标 Postgres 版本即可。

实际上这种方法得到了相当程度的支持,它比直接升级数据库大版本要安全得多。如果出现问题,你只需不切换到新服务器即可。如果你即将需要升级操作系统和/或希望停机时间最小化,这是一个很好的选择。在构建新服务器期间,原服务器保持只读状态,然后切换至新服务器。这种简单的方式只需在最终重建期间停机,或者如果你从旧服务器复制证书,则可以实现零停机。

如果数据库升级过程中出现任何问题,构建新服务器并恢复备份是简单的解决方案。

请务必在开始之前进行备份。由于你不会丢失上传文件,我只进行了仅数据库的备份。

4 个赞

注意:原因尚不明确,但PostgreSQL 18 升级禁用了原生数据校验和。PostgreSQL 数据校验和是默认功能,禁用它似乎非常不寻常。

PR 以不禁用数据校验和(默认启用):Do not disable PostgreSQL 18 data checksums - Pull Request #1105 - discourse/discourse_docker - GitHub

而且这比为了在一年内使用1小时而需要预留20GB空间要好多了,哈哈

也许这应该成为推荐的做法,以节省树木和水资源。:sweat_smile:

只是为了确认,我并没有使用 Discourse 提供的 PostgreSQL,而且 Discourse 本身目前也不要求 PG18,对吧?所以我暂时不需要升级到 PG18。

说得好。但另一点是,LTS(长期支持)版本每两年发布一次,所以趁此机会一并处理也是个不错的主意。

你确实还有很长一段时间。因为某个必需的功能,他们在更新后很快推动了……呃,某个版本的发布,但你很可能可以等待长达一年。我会关注 discourse_docker 仓库。他们迟早会开始讨论移除对 PG15 的支持;这方面的动静不大,是跟踪内部更新的一个简便方法。

2 个赞

在我的 Pi 5 安装上运行正常,重建两次就搞定了。

5 个赞

顺便问一下,我们有任何基准测试数据吗?

这可能会鼓励其他人 sooner 跟随我们无畏的脚步。

我的免费网页搜索 AI 告诉我:

对于典型的 Rails 应用,从 PostgreSQL 15 升级到 18 可以在不更改代码的情况下带来 ~10–25% 的查询性能提升,如果充分利用新的索引和规划器功能,在特定查询模式下甚至可提升 高达 40%

如果属实,那真是相当不错的升级!:tada:

3 个赞