我在 2 台 Postgres 9.1 服务器上设置了流复制。除了 archivecleanup 之外,其他一切都正常。日志中显示:
sh: 1: pg_archivecleanup: not found
2013-11-19 09:17:37 GMT WARNING: archive_cleanup_command "pg_archivecleanup /var/lib /postgresql/9.1/wals/ %r": return code 32512
我可以看到 pg_archivecleanup 位于 /usr/lib/postgresql/9.1/bin 中。为什么 Postgres 看不到它?
答案1
如果你使用的是 Postgres 9.1流式复制你为什么需要档案清理?
我建议针对您的整个情况采取以下替代方案:
将日志段保留设置为合理的值。
“合理”的一个良好起点是设置为wal_keep_segments
保留与您之前在主存档中保留的日志段数量大致相同。
您可以根据需要从那里进行调整。关闭
archive_mode
服务器。
流式复制消除了这种需要,并且上面的 (1) 意味着您将拥有大量日志段,如果需要,可以从中进行恢复。删除从属服务器上的
pg_archivecleanup
命令。 (因为在流复制中你根本不需要它。)recovery.conf
根据您的环境,您可以选择省略 (2)(如果您确实需要 WAL 存档而不是复制),但在大多数情况下,您只有该存档,因此无论如何您都可以进行复制/日志传送。节省磁盘 I/O。
答案2
/usr/lib/postgresql/9.1/bin
可能不在您的路径中。我建议您在配置文件中输入完整路径。