根据文档,我一直在尝试为一个简单的测试 PostgreSQL 9.0 数据库设置连续存档。在 postgres.conf 中,我设置了:
wal_level = archive
archive_mode = on
archive_command = 'touch /home/myusername/backup/testtouch'
archive_timeout = 30s
...并重新启动 PostgreSQL。touch 列出的文件永远不会出现。我可以手动运行 touch 命令,它按预期工作。
如果我尝试创建备份,它会永远等待 archive_command。在 psql 中;
postgres=# SELECT pg_start_backup('touchtest');
pg_start_backup
-----------------
0/14000020(1 行)postgres=# SELECT pg_stop_backup();
注意:pg_stop_backup 清理完成,等待需要的 WAL 段被归档 > 警告:pg_stop_backup 仍在等待所有需要的 WAL 段被归档(60 秒过去)
提示:检查你的 archive_command 是否正确执行。pg_stop_backup 可以安全地取消,但是如果没有所有的 WAL 段,数据库备份将无法使用。
什么会导致这种情况?我该如何解决?
附加信息:在 CentOS 5.4 上运行。以 root 身份安装 PostgreSQL 9.0.2。
更新:我首先尝试使用两者存档cp -i %p /home/myusername/backup/%f </dev/null并test ! -f /home/myusername/backup/%f && cp %p /home/myusername/backup/%f匹配手册。我将其简化为更简单的触摸呼叫以进行故障排除。
Postgres 配置看起来不错
CentOS 默认将用户目录模式设置为 700,因此请检查是否确实如此,以及您是否可以使用 su 作为 root 用户访问该文件
su - postgres -c "touch /home/myusername/backup/testtouch"
Run Code Online (Sandbox Code Playgroud)
如果确实有效,则尝试在 postgres 中使用详细日志记录并检查 postgres 日志以了解更多错误。
| 归档时间: |
|
| 查看次数: |
9357 次 |
| 最近记录: |