一种自动恢复掉电的MariaDBGaleraCluster的方法与流程

文档序号:12665093阅读:2053来源:国知局

本发明涉及云平台基础数据库领域,具体涉及一种自动恢复掉电的MariaDB Galera Cluster的方法。



背景技术:

数据库是云平台的基础组件,如何保证数据库的高可靠性是云平台建设需重点专注的项目。为保证云平台运行的高效性,现如今普遍采用MariaDB Galera Cluster,MariaDB Galera Cluster是MariaDB数据库的同步多主集群,但数据库集群在全部掉电并再次上电后,数据库集群的功能无法自动恢复,需人工介入使数据库集群恢复,费时费力,且不符合现如今提倡的自动化社会的建设需求。



技术实现要素:

针对现有技术中存在的缺陷,本发明的目的在于提供一种自动恢复掉电的MariaDB Galera Cluster的方法,能够快速恢复云平台服务。

为达到以上目的,本发明采取的技术方案是,包括:

当MariaDB Galera Cluster的节点掉电并上电后,上报所有节点的状态ID至服务发现集群中;

遍历节点的状态ID,并判断当前状态ID的值是否为所有节点状态ID的值中最大,若是,则启动当前状态ID对应节点的服务,若否,则跳过;

当最大值的状态ID对应的节点服务启动后,启动所有其它节点的服务。

在上述技术方案的基础上,状态ID的值通过全局事务ID获取。

在上述技术方案的基础上,所述节点的状态ID通过启动脚本上报至服务发现集群中。

在上述技术方案的基础上,待数据库守护脚本确定所有节点的状态ID均已上报至服务发现集群中后,开始依次遍历节点的状态ID。

在上述技术方案的基础上,对于执行非事务性操作时崩溃的MariaDB Galera Cluster:

所有节点的状态ID上报至服务发现集群中后,依次遍历节点的状态ID,当首次出现值为-1的状态ID,则启动该状态ID对应的节点的服务,执行数据库恢复服务,当成功恢复一个节点后,启动所有其它节点的服务。

在上述技术方案的基础上,所述服务发现集群为Etcd服务发现集群。

与现有技术相比,本发明的优点在于:当节点掉电并上电后,通过将节点的状态ID的值上报至Etcd服务发现集群中,比对找到状态ID的值最大的节点,并启动该节点的服务,然后启动所有其它节点的服务,从而自动恢复MariaDB Galera Cluster,且整个过程无需人工干预,便能快速恢复云平台基础数据库服务。

附图说明

图1为本发明一种自动恢复掉电的MariaDB Galera Cluster的方法的流程图。

具体实施方式

以下结合附图对本发明作进一步详细说明。

参见图1所示,本发明提供一种自动恢复掉电的MariaDB Galera Cluster的方法,用于恢复掉电并再次上电的MariaDB Galera Cluster的服务。MariaDB Galera Cluster为一种多主读写的数据库集群,MariaDB Galera Cluster是MariaDB数据库的同步多主集群,MariaDB数据库是MySQL的一个分支,MySQL是一个关系型数据库管理系统。本发明包括以下步骤:

步骤S1:当MariaDB Galera Cluster的节点掉电并上电后,通过启动脚本上报所有节点的状态ID至服务发现集群中,本实施例中服务发现集群为Etcd服务发现集群;

步骤S2:通过数据库守护脚本确定所有节点的状态ID均已上报至Etcd服务发现集群中后,遍历节点的状态ID,并判断当前状态ID的值是否为所有节点状态ID的值中最大,若是,则启动当前状态ID对应节点的服务,若否,则跳过。状态ID的值越大,表示该节点在数据库中所存储信息越全,因此最大状态ID的值的节点必须首先启动。Etcd服务发现集群为一种共享的键值存储系统,用于服务发现。

状态ID的值的获取是通过全局事务ID来实现的,可以在grastate.dat文件中找到相应配置,例如某个状态ID的grastate.dat文件的配置为:

#GALERA saved state

version:2.1

uuid:e8dc56f3-ce33-4df8-8b44-c692ac62cc9f

seqno:346578973

cert_index:

其中,seqno字段的值即为节点的状态ID的值,即状态ID的值为grastate.dat文件的配置中seqno字段的值,通过比较seqno字段的值即可判断当前状态ID的值是否为所有节点状态ID的值中最大。一般情况下,通过运行mysqld--wsrep-recover选项,便能够从error log中找到全局事务ID。

步骤S3:当最大值的状态ID对应的节点服务启动后,启动所有其它节点的服务,此时MariaDB Galera Cluster的全部节点的服务启动,从而恢复云平台的服务。

对于执行非事务性操作时崩溃的MariaDB Galera Cluster,例如在执行ALTER TABLE时,此时,seqno字段的值可能为-1,因而,所有节点的状态ID上报至Etcd服务发现集群中后,依次遍历节点的状态ID,当首次出现值为-1的状态ID,则启动该状态ID对应的节点的服务,执行数据库恢复服务,当成功恢复一个节点后,启动所有其它节点的服务,从而恢复云平台的服务。

当节点掉电并上电后,通过将节点的状态ID的值上报至Etcd服务发现集群中,比对找到状态ID的值最大的节点,并启动该节点的服务,然后启动所有其它节点的服务,从而自动恢复MariaDB Galera Cluster,且整个过程无需人工干预,便能快速恢复云平台服务。

本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1