语境:
假设在 Postgres 9.1 集群上使用 Streaming Replication/Hot Standby 时,备用节点出现故障。它停留了一天,在此期间,主服务器上发生了很多 DML。备用数据库的 recovery.conf 不包含“restore_command”条目(用于从 WAL 日志文件恢复),但包含“primary_conninfo”字符串(用于流式复制)。
问题:
如果我在主服务器上更改一天后再次启动备用服务器。它会仅使用流式复制“赶上”(最终进入反映主控的状态)吗?或者我是否必须启用 WAL 文件存档并让它应用在中断期间存档的文件以确保货币?
我在这里检查了 WAL 归档/流式复制文档,它说您不必同时启用 WAL 归档和流式复制,但尚不清楚在没有启用 WAL 文件归档的情况下是否会发生追赶。
谢谢!
是的,它会赶上,仅使用流式传输,如果(且仅当)自上次更新备用数据库后生成的 WAL 段数小于 postgresql.conf 中 wal_keep_segments 的值。这在文档的本节中进行了介绍:复制
在备用节点,您可以在 recovery.conf 上设置 restore_command,然后将 master pg_xlog(备用节点丢失)文件复制到 restore_command 指向的文件夹。您可以通过启动启动节点并键入来轻松找到丢失的 xlog 文件
您将在那里看到“等待 000000020000005200000025”或类似的内容,它告诉您应该开始从 master 复制哪个 pg_xlog 到备用的 restore_command 路径。
如果您启用 wal_archiving,它将从您设置的那一刻开始存档。
不,我设置了一个流复制实例,但不知何故它不同步了,直到我完成了
rsync
WAL 档案的手册,我才能让它再次工作。