暂无图片
pg主备切换
我来答
分享
Asky
2022-10-24
pg主备切换

pg版本是13.8的,部署了主从流复制的,每次做主从切换,把原来的主库充当为新主库的备库,都需要使用pg_rewind进行拉新,是不是这个步骤是必须的?

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
刘贵宾

pg_rewind是pg提供的工具,当2个pg实例时间线(timeline)出现分叉时,pg_rewind可以做实例间的同步。(比如主库运行的情况下,备库failover后运行了一段时间,此时主备的时间线就出现了分叉)
pg_rewind会对比两者的大小,然后把大小不一样的文件从源拷贝到目标,包括配置文件。但是它不会对比没有发生改变的文件,所以pg_rewind在比较大的库,更改少量数据时,运行效率较高。
pg_rewind可以运用在备库failover后,备库即时运行一段时间,也可以把备库拉到和主库一样的状态,重新成为standby。
pg_rewind运行过程中,会对比主(源)备(目标)的差异点,并把主库的差异点后的WAL日志传递给备库。所以,如果主库在差异点之后的WAL也丢失了,那么rewind是不会拷贝不存在的WAL日志的,所以此时备库仍然不会被成功做成standby。解决该问题需要用restore。

暂无图片 评论
暂无图片 有用 2
Asky

步骤如下:

1.停掉主库

pg_ctl -D /opt/pg13/data -m fast stop


2.将从库提升为主库

pg_ctl promote -D /opt/pg13/data


3.将原来的主库启动 作为新主库的备库


我测试的情况是 直接切换的,整个操作期间没有对数据库有任何的dml操作,但是每次都需要使用pg_rewind拉新


暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏