我发现archive_command只能由master上的postgresql运行。
如果我正在运行级联复制,如:
主设备 – >从设备1 – >从设备2,并且要将从设备1上的WAL段归档,该命令从不运行。
它是否正确?
如果是这样的话,如果我只是将自己的WAL段从pg_xlog目录复制(rsync或类似)到我的归档目录呢? 那么我可以使用这个存档目录作为新的slave的restore_command的源代码吗?
如果是这样的话,如果我只是将自己的WAL段从pg_xlog目录复制(rsync或类似)到我的归档目录呢? 那么我可以使用这个存档目录作为新的slave的restore_command的源代码吗?
是的你可以。 但是,您仍然有责任确保在执行此操作时不要删除任何日志文件。
为了获得最佳效果,您可能希望在Slave1上执行级联复制/ rsync /作为restore_command一部分。
请注意,如果您使用的是Postgres 9.5或9.6,则可以使其工作。
在待机状态下,您需要设置archive_mode = always 。 当Postgres看到archive_mode = on它只会将WAL归档为主文件,但always通知它归档WAL,甚至作为备用文件。 这些文档的最后一部分描述了这种行为。
当然,待机状态需要其他合适的configuration,例如:
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 ,因此需要对其进行相应的configuration。