03.02 Galera Cluster故障恢复

上篇文章是关于MariaDB利用Galera做集群的部署说明,一般情况下数据库集群运行很稳定,几乎无需运维关注。但是如果机房网络不畅通,经常有比较高的ping延迟,那么这种部署方式肯定会让运维人员头疼。下面我们说明下集群如果发生故障,我们该如何恢复集群。

Galera Cluster故障恢复

1. 检验节点是否正常

SHOW GLOBAL STATUS LIKE 'wsrep_cluster_status';

Galera Cluster故障恢复

正常情况是Primary

正常情况下,查询返回结果是Primary,其他任何返回值都表示该节点异常,如果每一个节点都不是Primary,说明我们需要重置集群的Quorum(一种集群投票选举机制)。

多数情况下是某个节点因为网络原因无法连接其他节点,恢复网络后,集群会自动恢复正常。很少出现都不是Primary这种问题,一旦出现,我们就需要重置Quorum。

2. 重置Quorum

2.1 首先要找到事务最大的节点

上一篇文中,我们标注了需要运维注意的几个参数里面有个wsrep_last_committed,该参数表示对应节点最后一次执行的事务编号,因为集群发生了问题,会有事务不同步,我们应该找到事务最大的节点,从该节点恢复集群。

执行如下:

SHOW STATUS LIKE 'wsrep_last_committed';

Galera Cluster故障恢复

数字代表事务编号

2.2 执行重置Quarum操作

选择事务最大的节点之后,我们就可以在该节点上重新恢复集群了。Quarum的重置恢复集群有两种处理方式:自动和手动。官网推荐使用自动方式恢复,因为自动恢复的节点会继续保留原有的缓存,恢复比较快。

自动恢复

下面说明下如何自动恢复,很简单,在事务最大的节点上执行SQL:

SET GLOBAL wsrep_provider_options='pc.bootstrap=YES';

执行这个sql之后,该节点会作为一个新的集群节点,其他节点会以此同步他们自己的状态,完成同步。

手动恢复

停掉所有服务

service mysql stop

在事务最大的节点A上,重新启动一个新的集群

service mysql start --wsrep-new-cluster

启动其他节点

service mysql start

手动启动之后,其他节点将以A节点的状态快照为准,完成集群的同步。此种方式恢复可能比较慢。(事务差距大的情况下)

感谢您的阅读,不足望指正,可留言交流。


分享到:


相關文章: