use zfs snapshot rollback postgresql's primary to old status in PG HA

前几天讲过zfs的snapshot用作PostgreSQL PITR, 使用接近还原点的snapshot可以减少xlog的apply, 缩短数据库的恢复时间.
其实snapshot还有一个作用, 用作流复制HA的主备角色切换后避免因为XLOG的差异导致old primary无法切换成standby角色.
例如  : 
一个PG 流复制的HA场景如下 : 

use zfs snapshot rollback postgresqls primary to old status in PG HA - 德哥@Digoal - PostgreSQL
在发生failover后, standby节点切换成主节点, 老的主节点切换成standby节点.
但是由于standby节点和老的主节点存在差异, (即只接收了部分XLOG), 那么STANDBY激活后实际上是从primary节点的过去状态开始了新的读写, 所以primary节点不能直接切换成standby节点.
use zfs snapshot rollback postgresqls primary to old status in PG HA - 德哥@Digoal - PostgreSQL

如果primary节点有snapshot的话, 可以回到以往的snapshot, 使用rollback或者使用clone都没有问题. 只是clone更保险一点, 因为还能回来, 完全OK后可以删掉其他的dataset.
注意必须回到一个节点并且所有的xlog都在新的primary可以找到.

use zfs snapshot rollback postgresqls primary to old status in PG HA - 德哥@Digoal - PostgreSQL
 
这种问题的另外一种解决办法是使用rsync , 这也是pgpool-II中的用法, 但是rsync对于比较大的数据库, 开销一是很大的, 因为所有的文件都要读一遍, 技术checksum, 然后与本地文件的checksum进行比对. 所以不推荐使用rsync.

[参考]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值