首页 > 解决方案 > 如何从主服务器管理 postgreSQL 9.6 缺少的 WAL 段?

问题描述

一个有postgresql 9.6的PITR配置,有一个主服务器,一个中间服务器,和两个从服务器,热备但手动切换,例如:

Master
  |
 I1
 / \
S1 S2

写入磁盘失败导致主服务器崩溃。开发团队中的一个伙伴纠正了错误,然后重新启动了master数据库(而不是提升中间服务器,这是建立的程序)。因此,序列中缺少损坏的部分 WAL 和整个 WAL。

现在,我没有丢失任何事务,但从属服务器 1 以及中间服务器抱怨缺少 wal,(错误:请求的 WAL 段 [...] 已被删除)即使它们仍在更新;s2 也抱怨(与上面相同,但前面是(致命:无法从 WAL 流接收数据:),并且它没有更新。

由于主服务器宕机时发生的事务已经 - 已经 - 被执行,我不在乎丢失的 wals。所以正确的问题是:

1)如何摆脱对失踪沃尔的唠叨?我已经尝试过 pg_resetxlog -l(下一个有效的 WAL 文件)-f(不再抱怨,但没有更新)和 pg_basebackup,毫不奇怪,在第二次测试中,它返回到上述情况。

2) 为什么其中一个从属设备更新(意外)而另一个不更新(预期)?我首先想到的可能是更新的slave直接连接到master,但事实并非如此;我检查了配置文件,它们在两个从站中都是相同的。

感谢您的关注

标签: postgresqlpitr

解决方案


推荐阅读