pg_archivecleanup 和流复制

pg_archivecleanup and streaming replication

使用 postgres 9.3。

我对pg_archivecleanup的正确用法有点困惑。

我正在使用流式复制和备份以及连续归档来进行 PITR 恢复。

我认为我无法在备用服务器上的 recovery.conf 中配置 pg_archivecleanup,因为它不会实现任何目标。主数据库未归档到备用数据库可访问的位置。 master 正在归档到其本地磁盘上的某个位置,然后这些归档和关联的备份正在 rsync'd 到一个大的备份磁盘。

所以,看来解决方案是运行 pg_archivecleanup in "standalone" mode on the master,例如:

/usr/lib/postgresql/9.3/bin/pg_archivecleanup -d /archive 0000000100000010000000F0.00000028.backup

所以,我会做一个 cron 作业,该作业将 运行 pg_archivecleanup 命令用于任何早于最新文件的 .backup 文件,然后删除那些备份文件,只留下最新的

我的理解和计划是否正确?

如果你想在最新的基础备份之后只保留 WAL 段,你只需 运行 pg_archivecleanup 在独立模式下获取最新的 .backup 文件(而不是那些比最新的更旧的文件)。

但是您真的希望只有一个可用的备份吗?首先,您将无法恢复到上次备份之前的点。其次,为了以防万一(损坏等)进行一些备份是有意义的。

将段归档到本地磁盘然后在其他地方同步它们似乎很奇怪。为什么不将您的 rsync(然后同步以将 OS 缓冲区刷新到磁盘)放入 archive_command?这确保该段在到达目的地之前不会从 pg_xlog 中删除。