我是靠谱客的博主 大方柠檬,最近开发中收集的这篇文章主要介绍REPMGR脑裂问题紧急处理步骤,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录
环境
症状
问题原因
解决方案

环境
系统平台:N/A
版本:5.6.4,5.6.5
症状
Repmgr集群脑裂是指数据库集主节点和至少一个备节点均认为自己为主库导致集群状态混乱,此时数据库写入数据则只会写入到VIP所在节点,状态混乱节点无法正常同步数据。

Repmgr集群脑裂状态通常如下所示:

[highgo@hgdb ~]$ repmgr cluster show

ID | Name          | Role    | Status    | Upstream      | Location | Priority | Replication lag | Last replayed LSN

----+---------------+---------+-----------+---------------+----------+----------+-----------------+-------------------

1  | 10.10.10.1 | primary | * running |               | default  | 100      | n/a             | none             

2  | 10.10.10.2 |!primary |  running |               | default  | 100      | n/a             | none 

问题原因
造成该问题的原因多种多样,通常由于以下几种可能性:

1、主备几点的网络出现问题。

2、人工误操作,导致主节点暂时失活,此时备节点发生切换,主节点又恢复为活跃状态。

3、其它问题导致备节点无法访问主节点数据库状态。

解决方案
状态检查:

集群状态命令:repmgr cluster show

守护进程检查:ps -ef | grep repmgrd

数据库状态检查:pg_ctl status或者ps -ef | grep postgres

VIP检查:ip addr |grep VIP地址

日志排查

主要通过数据库日志和高可用集群管理日志排查发生脑裂的原因。

恢复步骤

①判断当前集群中数据最新节点(重要), 该操作的目的是为了保证数据零丢失/尽可能少丢失,判断方式可以通WAL日志的生成日期和LCN号等,也可以通过业务某些变更表来确认最新数据集群。

②关闭滞后节点所有数据库进程与守护进程然后重新启动。

③如果第二步无法解决脑裂问题,则需要重启滞后节点服务器。

④如果重启服务解决脑裂问题,则需要将滞后节点重做为备节点加入到集群中。

PS:如何查看数据库当前的LSN号?

highgo=#  select pg_current_wal_lsn();
pg_current_wal_lsn
--------------------
7/B312B9A8
(1 row)

最后

以上就是大方柠檬为你收集整理的REPMGR脑裂问题紧急处理步骤的全部内容,希望文章能够帮你解决REPMGR脑裂问题紧急处理步骤所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部