【发布时间】:2021-09-22 10:21:14
【问题描述】:
我在 PG 13.3 上运行 master & replica。我决定使用延迟复制(recovery_min_apply_delay 参数中配置的 30 分钟)。最重要的是,WAL 归档已配置好并且运行良好。
当 master 上的负载长时间很高时,复制会落后,直到超过 max_slot_wal_keep_size(请参阅我的另一个相关问题:Replication lag - exceeding max_slot_wal_keep_size, WAL segments not removed)。一旦落后太远,插槽就会“丢失”,并且副本会回退到从存档中恢复 WAL。到目前为止一切都很好。问题是,它再也不会尝试复制。重新启动从站没有帮助。 我有两种方法可以恢复复制:
- 重启和配置编辑
- 从副本中删除延迟配置
- 重新启动 postgres。然后它从存档中恢复所有 WAL,一旦没有任何东西,它将再次开始复制 - 但没有任何延迟。然后我再次编辑配置以引入复制,它有时有效,有时无效。我认为这取决于负载。
- 从存档中删除 WAL 段
- 从 postgresql 日志中查看当前恢复的 WAL 段,并暂时从 WAL 存档中移动以下一段。当 PG 尝试恢复时,它会失败并回退到复制
这似乎不是正确的做法,不是吗?
谢谢,
-- 马辛
【问题讨论】:
标签: postgresql replication postgresql-13