我试图设置流复制,但由于某种原因,当我更新主服务器上的数据库时,更改没有反映在备用服务器上,直到我重新启动主服务器上的postgresql服务。(我在主服务器中看到新的xlog文件,但这些文件没有同步到备用服务器)。当我在master上重新启动服务时,我终于看到新文件添加到我的共享wal_archive文件夹
唯一可以让它自动同步的方法是设置archive_timeout。
主:
wal_level = 'hot_standby' # minimal, archive, hot_standby, or logical
archive_mode = on # allows archiving to be done
# (change requires restart)
archive_command = 'copy "%p" "\\VBOXSVR\wal_archive\%f"'
max_wal_senders = 3 # max number of walsender processes
# (change requires restart)
wal_keep_segments = 10 # in logfile segments, 16MB each; 0 disables
pb_hba.conf
host replication postgres slaveip/32 trust
听起来您使用的是基于归档的复制,而不是流。因此,它只在完成WAL归档并打开新归档时进行复制,这种情况会发生:
- 当服务器在干净关机前执行检查点时
- 当一个WAL归档被写活动填充,并且需要一个新的时
-
archive_timeout
时刻
如果你想要连续复制,你需要使用流复制。详细信息请参见手册。这包括在下游服务器的recovery.conf
中设置一个连接字符串,以便它可以直接连接到上游主服务器,以近乎实时的方式接收新的写操作。
您仍然应该启用基于存档的复制,因为这允许副本在断开连接一段时间后恢复。对于时间点恢复也很有用。