我在PostgreSQL中使用主从流复制。Repmgr配置为处理自动故障转移。
一旦故障转移发生,我需要使旧的主站成为一个从站,而不需要做任何基本备份,而且新的主站需要一些更改才能充当主站,比如需要启用wal日志和其他东西。
如何避免在复制到老主和同步老主时没有基础备份的第二阶段的这些更改?
发布于 2017-09-20 02:28:19
从根本上说,你不可能没有老主人的某种重置。除非旧的主服务器在新的主服务器被提升之前被关闭,并且您确保所有的WAL都从旧的母版同步到新的主版,否则在副本提升到新的时间线时,旧的通常会稍微“领先”于新提升的副本。
它将拒绝开始重放新主人,因为这样做会腐蚀老主人。旧主服务器可能已经分配了事务ID 1234。那么,如果新主人说“我要开始交易1234”,该怎么办呢?它已经有1234了!在系统的低层碰撞安全部分,到处都有类似的问题。
这就是为什么你通常在启动前重新同步老主人和新主人。使用rsync或并行变体之一,这可以变得更快。
但是,您可以使用pg_rewind来“回放”旧主机,使它的历史与新主人不同,这样它就可以开始从新主人重放。我自己不使用,所以我不能做更多的事情就是指给你看。但我的一位同事写了几篇博客文章,可以帮助你:
repmgr可以与repmgr standby switchover一起使用pg_rewind。据我所知,它不使用自动故障转移,但您可能想要求repmgr团队澄清这一点。
就我个人而言,我认为自动故障转移是一个糟糕的主意,除非你在正常操作中随机触发它,所以你总是知道它是有效的。超猴子风格。否则,这只是一个加倍你的灾难的配方。更喜欢手动触发的自动故障转移,比如repmgr standby switchover,并提醒您什么时候出了问题。
https://dba.stackexchange.com/questions/186298
复制相似问题