如何在致命错误后恢复 Postgres 复制从站

Yur*_*han 4 postgresql replication

在 4 个 Debian 8 Jessie 服务器上,我有 PostgreSQL 9.4.3 master + 3 slaves。在 master 上的大量数据更改后,slave 日志显示此错误:

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

我需要哪些步骤来恢复/重建从站?

Kas*_*dry 6

如果您设置了一个archive_command并将 WAL 段保存在其他地方,则只需在 WAL 存档restore_command中的recovery.conf每个辅助节点上指向一个,它们就会抓取下一个需要的段并继续愉快地进行。

如果您没有设置archive_command,则需要pg_basebackup在每个辅助节点上设置 ,因为没有那个 WAL 段,它们永远无法赶上。由于您使用的是 9.4,我建议还设置一个复制槽,这将阻止主服务器回收流副本所需的 WAL 段。

您可以在复制槽文档中找到更多相关信息。

否则,您需要有一个archive_command将 WAL 保存在其他地方以赶上的集合,或者您需要wal_keep_segments在主服务器上进行足够高的调整,使其不会在系统负载过重的情况下回收文件。

连续存档和时间点恢复文档中介绍了archive_command在您的设置中的设置。postgresql.conf

异地复制问题和如何解决这些问题中介绍了与您所处的情况类似的情况示例以及防止这种情况的潜在解决方案。

希望这些信息足以让您将副本恢复到工作状态。=)