在4台Debian 8 Jessie服务器上,我有PostgreSQL 9.4.3主+3奴隶。在主服务器上的大量数据更改之后,从日志显示了以下错误:
LOG: started streaming WAL from primary at 182/0 on timeline 1 FATAL: could not receive data from WAL stream: ERROR: requested WAL segment 000000010000018200000000 has already been removed
我需要哪些步骤来恢复/重建奴隶?
发布于 2015-10-25 17:18:38
如果您设置了一个archive_command
,并将您的WAL段保存到其他地方,那么您只需在WAL存档的每个次要文件中指向recovery.conf
中的一个restore_command
,它们就会抓住下一个所需的段并愉快地继续进行。
如果您没有设置一个archive_command
,那么您需要在您的每个次要文件上使用一个pg_basebackup
,因为没有这个WAL段,它们就永远赶不上了。既然是9.4,我建议还设置一个复制槽,这将防止主服务器回收流副本所需的WAL段。
您可以在复制槽文档中找到更多关于这一点的信息。
否则,您需要有一个archive_command
集,它可以将WAL保存到其他地方才能赶上,或者您需要在主服务器上调整足够高的wal_keep_segments
,使其不会在系统负载很重的情况下回收文件。
在archive_command
文档中介绍了在postgresql.conf
中设置连续归档与时间点恢复。
场外复制问题及解决方法中介绍了一个类似于您所处的情况的示例,以及防止这种情况的一个潜在解决方案。
希望这是足够的信息,让你的副本回到工作状态。=)
https://dba.stackexchange.com/questions/119114
复制相似问题