【发布时间】:2018-05-18 15:13:12
【问题描述】:
我已在主服务器和辅助服务器之间设置流式复制。我已启用存档。在 Postgres 日志文件中,我看到以下错误。
< 2017-12-05 03:08:45.374 UTC > WARNING: archive_mode enabled, yet archive_command is not set
< 2017-12-05 03:08:46.668 UTC > ERROR: requested WAL segment 0000000100000000000000E3 has already been removed
< 2017-12-05 03:08:51.675 UTC > ERROR: requested WAL segment 0000000100000000000000E3 has already been removed
< 2017-12-05 03:08:56.682 UTC > ERROR: requested WAL segment 0000000100000000000000E3 has already been removed
我们是否需要为流复制启用archive_mode = on?如何避免上述错误?
max_wal_senders = 3
wal_keep_segements = 32
【问题讨论】:
-
我会先在 master 上增加
wal_keep_segements -
我已经将 wal_keep_segments 设置为 32
-
我会增加到至少 1GB(~60 wals)。在你看到上面的错误之后,你可以重建奴隶。或者启用archive_command而不是增加
wal_keep_segments,但同样 - 在你的情况下,你无论如何都必须重建奴隶 -
每次发生这种情况都重建slave是否理想?如果即使增加到 60 后仍会出现此问题怎么办?
-
请重新阅读我的答案中有关如何计划和设置流复制的链接。如果你设置到 60 却失败了,那么 60 太低了。例如,最多设置 2000 个,或控制 master 上的事务,或使用下面链接中描述的任何其他方法