我有一个 PostgreSQL 11 流(即
wal_type = replica
)级联复制方案,设置如下:
db1 -> db2 -> db3
如果我在
db1
上执行 db3
,pg_ctl promote
和 db2
会发生什么?
db1
是否会自动转换为db2
的副本?db3
是否会受到任何影响,还是会继续复制db2
,因为它无论如何都是主要的?由于在故障转移到副本后回退到原始主数据库并非易事,因此我特别关心保持
db1
不受影响,这样如果升级出现任何问题,我可以将其用作原始主备份(并重新创建 db2
和 db3
(如有必要),即使有一些数据丢失在我的情况下也是可以接受的)。
当您在 db2 上执行 pg_ctl Promotion 时,db2 的第一个 walreceiver 进程将终止,如果存在一些应用延迟,第二个启动进程将尝试应用 wal 文件,在此 db2 提升为新的 master 之后。
db1 不会自动转换为 db2 的副本,您必须手动处理它。
升级db2过程中,db3不受影响。
请参阅以下链接了解更多信息:-
https://www.postgresql.org/docs/current/warm-standby-failover.html