在没有WAL归档的情况下,PostgreSQL 9.1流复制是否会滞后?


16

内容:

假设在Postgres 9.1群集上使用流复制/热备用时,备用节点将关闭。它停了一天,在此期间主服务器上发生了许多DML。备用数据库的recovery.conf不包含“ restore_command”条目(用于从WAL日记文件还原),但是包含“ primary_conninfo”字符串(用于流复制)。

题:

如果我在主服务器上进行了一天的更改后再次启动了备用服务器。是否仅使用流复制来“赶上”(最终进入与主服务器类似的状态)?还是我必须启用WAL文件归档并让其应用在中断期间归档的文件以确保币种?

我在此处检查了WAL归档/流复制文档,它说您不必同时启用WAL归档和流复制,但是尚不清楚在不启用WAL文件归档的情况下是否会发生追赶。

谢谢!

Answers:


9

是的,仅当且仅当使用流时,它才会使用流来追赶自备用数据库上次更新以来生成的WAL段数小于postgresql.conf中的wal_keep_segments的值。文档的此部分介绍了此内容:复制


2
这个答案是正确的,但突出了问题所在。如果您确实通过了wal_keep_segments,则复制将失效。如果要使系统在与主服务器断开长时间连接后仍能正常运行,则设置基于文件的复制不是可选的。
格雷格·史密斯

0

在备用节点上,可以在recovery.conf上设置restore_command,然后将主pg_xlog文件(在备用数据库上丢失)复制到restore_command指向的文件夹中。通过启动启动节点并键入,您可以轻松找到缺少的xlog文件

ps aux | grep postgres

您将看到“正在等待000000020000005200000025”或类似的内容,它告诉您应该从主副本复制到备用副本的restore_command路径的pg_xlog。

如果启用wal_archiving,它将在设置后立即开始存档。


我了解使用基于文件的WAL归档并为备用数据库提供restore_command来加载WAL文件,可以确保它能赶上来。不过,这不是我的问题;我想知道如果使用流复制(不发送WAL文件,仅使用'primary_conninfo'中指定的复制流),备用数据库是否会赶上。
Zac B

没有。postgres不会那样做。如果复制延迟,则应复制日志文件。
sftsz 2012年

0

不,我设置了一个流复制实例,但由于某种原因它不同步,直到我编写rsync了WAL存档手册之前,我无法使其再次工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.