文章目录
[隐藏]

一、简介

在《Galera集群恢复的常见七种场景》中详细介绍了其中Galera集群故障的七种恢复场景,除了脑裂场景外(场景七),针对前六种常见恢复场景,撰写Shell脚本check-or-recover-galera.sh进行Galera检测以及故障恢复,该脚本可作为业务系统服务自启动的一部分。

Galera集群环境:三个节点(controller01、controller02和controller03)centos7.1、mariadb 10.1

二、脚本

1、恢复流程

大体流程分为服务检查、集群恢复和状态检测三部分。

详细如下:本脚本首先检查三个节点上mariadb服务状态,根据总体服务状态判断恢复场景

  • 对于一个或两个节点服务停止的场景(场景一、二、四、五),直接启动对应节点上的服务即可。
  • 对于全部节点上服务停止的场景(场景三、六),需要判断执行最新事务状态的节点,然后首先在该节点上启动Galera集群,然后在其他节点启动服务即可。问题的关键变为寻找执行最新事务状态的节点,分为以下两种情况:
    • 如果全部节点上的服务全部正常停止(场景三):查找每个节点上grastate.dat文件中最后执行事务序号seqno,然后排序,最大者为启动节点
    • 如果全部节点上的服务存在非正常停止(场景六及其他):这种情况一般是机房断电等原因引起,每个节点上grastate.dat文件中最后执行事务序号seqno都为-1,需要查询gvwstate.dat文件中Primary Component的记录,找到my_uuid和view_id相等的节点即为启动节点。

找到启动节点后,恢复Galera集群,最后进行状态检测。

2、脚本内容

check-or-recover-galera.sh内容如下: