级联备用服务器上的 Postgresql archive_command

级联备用服务器上的 Postgresql archive_command

我发现archive_command 仅由主服务器上的postgresql运行。

如果我正在运行级联复制,例如:

主服务器 -> 从服务器 1 -> 从服务器 2,并且想要在从服务器 1 上归档 WAL 段,该命令永远不会运行。

它是否正确?

如果是这样,如果我自己将 WAL 段从 pg_xlog 目录复制(rsync 或类似方法)到我的存档目录会怎么样?然后我可以使用这个存档目录作为新从属系统中 restore_command 的源吗?

答案1

如果是这样,如果我自己将 WAL 段从 pg_xlog 目录复制(rsync 或类似方法)到我的存档目录会怎么样?然后我可以使用这个存档目录作为新从属系统中 restore_command 的源吗?

是的,你可以。但是你有责任确保在执行此操作时不会丢失任何日志文件。

为了获得最佳效果,你可能希望将级联复制/rsync/其他操作作为restore_command在 Slave1 上。

答案2

请注意,如果您使用的是 Postgres 9.5 或 9.6,则可以完成此操作。

在备用服务器上,您需要设置archive_mode = always。当 Postgres 看到archive_mode = on它只将 WAL 归档为主服务器时,但always告诉它即使作为备用服务器也要归档 WAL。这些文档描述此行为。

当然待机需要其他合适的配置来配合,例如:

archive_mode = always
hot_standby = on
wal_level = replica
max_wal_senders = 3
archive_command = whatever-you-like
archive_timeout = 300

基本上,如果您告诉备用数据库always存档 WAL,那么它就会archive_command照常服从,因此请相应地进行配置。

相关内容