执行pg_ctl promote提升db2后,db1与db3的状态变化咨询
PostgreSQL 11级联复制提升db2后的节点状态分析
针对你搭建的db1 -> db2 -> db3级联复制架构,执行pg_ctl promote提升db2为主库后,各节点的变化如下:
1. db1是否会自动转换为db2的副本?
不会。PostgreSQL的流复制是单向主动拉取模式,原主库db1和副本db2之间的复制关系是db2主动从db1拉取WAL日志。当db2被提升为主库后,db1不会感知到这个操作,仍会保持自身的主库状态,不会自动切换为db2的副本。此时db1和db2会成为两个独立的主库,若有应用向两者写入数据,数据会逐渐产生分歧。
2. db3是否会受到影响,还是会继续复制db2?
db3会继续复制db2,不会中断同步(前提是db3的primary_conninfo配置仍指向db2)。因为db3原本就是以db2为上游的副本,当db2被提升为主库后,它会继续生成WAL日志(wal_type = replica配置保持有效),db3会自动识别db2的主库状态变化,继续从db2拉取最新的WAL日志,维持同步关系。如果提升前db3和db2存在同步延迟,提升后db3会自动追赶至最新状态。
关于保持db1不受影响的说明
你无需担心db1会被修改,提升db2的操作完全不会影响db1的状态,db1会持续作为独立的主库运行。如果后续提升操作出现问题,你可以直接停止db2和db3的写入操作,将它们重新搭建为db1的副本(可通过基础备份重建或利用WAL日志恢复,接受一定数据损失的情况下操作成本更低),以此回退到原架构。
内容的提问来源于stack exchange,提问作者jotadepicas
相关产品推荐
相关产品推荐

