mreach
(M. Reacher)
1
当我尝试运行系统备份时,出现以下错误:“备份失败。请检查日志。”
日志显示:pg_dump: [archiver (db)] 连接到数据库 "discoursedb" 失败:无法连接到服务器:连接被拒绝
我认为可能存在两个问题:
- 远程服务器运行在非标准端口上。
- 远程 PostgreSQL 运行的是较新版本的 PSQL。
当我进入应用(/var/discourse/launcher enter app)并执行手动备份时,我注意到最初在没有指定端口的情况下,我得到了完全相同的错误:
$ pg_dump -h 123.456.789.101 -U username -W -F t discourse_db > discourse_db_backup.tar
密码:
pg_dump: [archiver (db)] 连接到数据库 "discourse_db" 失败:无法连接到服务器:连接被拒绝
\t服务器是否在主机 "123.456.789.101" 上运行,并接受 TCP/IP 连接于端口 5432?
这个问题很容易解决(除了我不知道如何强制 Discourse 在备份时使用正确的端口),但接下来的问题更令人担忧:我们在数据库服务器上使用了较新版本的 PSQL:
$ pg_dump -h 123.456.789.101 -p 45678 -U username -W -F t discourse_db > discourse_db_backup.tar
密码:
pg_dump: 服务器版本:11.5 (Ubuntu 11.5-3.pgdg18.04+1);pg_dump 版本:10.10 (Debian 10.10-1.pgdg100+1)
pg_dump: 因服务器版本不匹配而中止
在这种情况下可以采取什么措施?是否有可能使实际系统备份在这种情况下正常工作,还是必须分别备份 Discourse 和 PostgreSQL 数据库?
如果后者是唯一的选择,那么备份数据的正确方法是什么?是否有一种首选的协调机制可以同时完成这两项任务,而无需编写新的脚本来实现?
mreach
(M. Reacher)
2
我在另一篇帖子中发现了一些关于类似情况的讨论。我的情况主要区别在于,我们将文件存储在本地服务器上,而不是 S3。我可以不备份 PostgreSQL,因为它是独立备份的,但我仍然需要备份:
我仍然希望有一个包含数据库 + 内容 + 设置的统一备份,但我想您可能不支持或不会支持这种方案,因此我至少希望将内容和设置打包成一个统一的包。
pfaffman
(Jay Pfaffman)
3
Postgres 11 不受支持。您可以自行查找如何在不同版本之间进行恢复,但要让 Discourse 与 pg11 兼容,需要做一些额外工作。
mreach
(M. Reacher)
4
有趣又奇怪。我曾在某处看到说 11 版本没问题,但除此之外,我已有系统部署到 11 版本,到目前为止尚未发现任何错误或问题(备份除外)……现在你让我担心了……
哦,来了,根据这篇帖子,PostgreSQL 11“应该能正常工作”。
pfaffman
(Jay Pfaffman)
5
是的。我还有两套系统部署在 PostgreSQL 11 上,运行正常,只是我目前直接进行备份。我在容器中已将 PostgreSQL 升级到 11 版本。它们可以执行备份,但无法恢复。
Discourse 备份系统在检测到 PostgreSQL 版本不匹配时,应仅发出警告而不应失败。我刚才尝试自己进行备份,由于我也在使用外部 PostgreSQL 服务器,结果根本没有创建任何 tarball 文件。
kuaza
(kuaza)
8
我也遇到了同样的问题。我将 PostgreSQL 数据库移到了单独的服务器,然后开始收到备份错误。我通过删除主服务器上的 PostgreSQL 并重新安装来找到解决方案。
cd /var/discourse
./launcher enter app
apt-get remove postgresql-client-common
apt-get update
sudo apt-get install postgresql
详情:Discourse yedekleme pg_dump hatası ve çözümü: pg_dump: error: server version: 12|13|14|15|*; pg_dump version: 12|13|14|15|* - Veritabanı Yönetim Sistemleri - Soru Cevap