我们建议您测试该流程,因为这并非我们支持的功能,但很可能您只需执行升级操作即可顺利解决。
我刚刚完成了 PostgreSQL 18 的标准安装以及 双容器 配置,整个过程非常顺利,没有任何问题。再次感谢 @chrisr 和团队提供的简易指南。
对于配置在 Cloudflare CDN 后面并使用 R2 进行上传/备份的双容器环境,我使用的步骤如下:
第一步:磁盘清理
# 清除所有未使用的 Docker 数据
docker system prune -a -f
# 清除旧日志和 apt 缓存
journalctl --vacuum-time=2d
apt-get clean
apt-get autoremove -y
# 检查数据库大小
du -sh /var/discourse/shared/data/postgres_data
# 检查新的可用空闲空间
df -h -x tmpfs -x devtmpfs
第二步:维护与备份
- 编辑 Cloudflare 维护页面,显示“15-20 分钟系统维护更新”,并设置自动刷新计时器(可能不会花这么长时间,但以防万一!)。开启一个 Cloudflare Worker 路由以显示维护页面。
- 通过命令行触发备份:
cd /var/discourse
./launcher enter web_only
discourse backup
exit
- 登录 Cloudflare R2 控制台并检查备份文件夹,确认备份文件已成功上传。
第三步:安全关机
- 首先停止 Web 容器以断开所有活动连接,然后停止数据库容器:
cd /var/discourse
./launcher stop web_only
./launcher stop data
- 验证 PostgreSQL 是否正常关闭:
tail -n 20 shared/data/log/var-log/postgres/current
第四步:升级重建
按以下顺序运行命令:
./launcher rebuild data # 导出、迁移并恢复 PostgreSQL 18
./launcher rebuild data # 重建数据库容器
./launcher rebuild web_only # 重建 Web 应用
第五步:优化与清理
- 生成缺失的 pg18 表统计信息,否则论坛速度会比平时慢:
docker exec -u postgres data /usr/lib/postgresql/18/bin/vacuumdb -d discourse --analyze-in-stages
- 测试论坛以确保一切正常运行——如果你设置了自动刷新计时器,此时维护页面应该不再显示。
- 删除指向维护页面的 Cloudflare Worker 路由(我们不想触及每日 100,000 次的限制!)
- 删除旧的 pg18 数据以释放磁盘空间:
rm -fr /var/discourse/shared/data/postgres_data_old/
完成!
![]()
3 个赞
