POSTGRESQL 高可用 repmgr 回答问题 ,失败的主节点怎么处理?

(如果不知道在说什么的,请参见之前的 6期文字 谁说postgresql 没有靠谱的高可用 1-6)

清早有一个数友,提出了一个问题,参见上图。一般来说数据库如果做了高可用(主从,非支持分布式协议的那种,类似REPMGR),在主从切换后,是可以将主变为从,继续rejoin 到repmgr 的HA中的。

首先我们要确认的是,我们已经有了两台POSTGRESQL , 并且已经安装了 REPMGR 并且,已经启用了 repmgrd 自动检测failover 的进程在两台机器上。

主库

secondary

问题应该就从这里开始,我们来捋一捋,如果主库挂了有几种情况

1  主库由于某些原因,短暂的不能工作,后面立即启动,在判断切换的时间以内,按照之前的 文字我们设置的是 6次 10秒, 整体应该是1 分钟后开始切换。

2  主库无法启动,主从已经切换,然后我们需要将主库在加入到集群中充当从库,这就是问题的开始

情况1 系统切换,但是在夜间系统并未进行大量的数据的DML 操作,并且主库也并未收到很严重的损伤,无法启动。

系统开始切换的准备和判断

最终 192.168.198.22 变成了主库

我们启动了 192.168.198.21 ,然后这就是问题中提到的出现的问题

我们怎么办,

repmgr node rejoin -f /etc/repmgr.conf -d 'host=192.168.198.22 dbname=repmgr user=repmgr'  --force-rewind --config-files=postgresql.conf --verbose

执行上面的这条命令,失效的主节点就会在加入到,新的主节点22 中

并且系统的启动,以及repmgr 注册的信息都会通过这一条命令完成。

那到此就结束了吗,有没有可能执行失败,上面的命令到底的本质是什么

pg_rewind,pg_rewind做了什么

扫描目标集群的WAL日志,从源集群的时间轴历史与目标集群分叉之前的最后一个检查点开始。对于每一条WAL记录,记录每一个被触摸的数据块。这将生成在源集群分叉之后目标集群中更改的所有数据块的列表。

使用直接文件系统访问(-source-pgdata)或SQL (-source-server)将所有更改的块从源集群复制到目标集群。

将所有其他文件(如pg_clog和配置文件)从源集群复制到目标集群。

从故障转移时创建的检查点开始,从源集群应用WAL。(pg_rewind并不应用WAL,它只是创建一个备份标签文件,让PostgreSQL从这个检查点开始回放所有的WAL。)

那pg_rewind 的执行需要哪些条件,为什么我执行上面的命令就失败,请参考之前的关于 pg_rewind 的文字。

这里一句带过 wal_log hit 要开,full page 要开, 另外在执行这个命令的时候,如果失败很可能会毁掉当前要加入集群的节点再次可以启动数据库的可能性,所以建议运行这个命令时,做好其他准备。

问题,如果失败了怎么办。

可以重新将失败的节点的数据清空,然后参考 Postgresql 谁说没有靠谱的高可用 ·1-6 重新制作即可。然后在重新运行 上的命令  (另一个人有时候想不了周全,有些东西可能一带而过,见谅)

另外失败的原因还可能由于新主工作比较频繁,产生了大量wal log ,然后失效的库并未在最短的时间进行恢复,则有些 wal log 已经无法进行复制,(如果有archive 或许还能救一命),则只能重做。另外也与checkpoint 以及max_wal_size 设置的大小有关。

如果执行PG_REWIND 失败,是应该重做复制关系的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
PostgreSQL是一个强大的开源数据库管理系统,而repmgr是一个用于实现高可用性的工具,可以帮助用户部署和管理PostgreSQL的复制集群。下面将介绍如何在CentOS 7上安装和部署repmgr实现PostgreSQL高可用性。 首先,需要在CentOS 7上安装PostgreSQLrepmgr。可以通过yum安装PostgreSQL,然后再通过源代码安装repmgr。安装完成后,需要在所有节点上创建用于复制的用户和用户组,并配置SSH免密登录。 接下来,在节点上初始化repmgr并创建repmgr用户,然后再在备用节点上连接到节点并完成初始化。 然后,在节点上进行repmgr的配置,包括指定节点ID、设置连接信息等。同时,在备用节点上也需要进行repmgr的配置,指定备用节点的ID并设置连接信息。配置完成后,在节点上执行repmgr standby clone命令将节点的数据拷贝到备用节点。 最后,在所有节点启动repmgr守护进程,并在节点上执行repmgr cluster show命令检查集群状态。如果所有步骤都完成并且状态正常,那么repmgr的安装和部署就顺利完成了。 通过以上步骤,就可以在CentOS 7上安装和部署repmgr实现PostgreSQL高可用性。当节点发生故障时,repmgr可以自动将备用节点提升为节点,确保系统的持续可用性。同时,repmgr还提供了监控和管理PostgreSQL复制集群的功能,帮助用户更好地管理数据库系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值