一种自动恢复掉电的MariaDB Galera Cluster的方法技术

技术编号:15639030 阅读:147 留言:0更新日期:2017-06-15 20:56
本发明专利技术公开了一种自动恢复掉电的MariaDB Galera Cluster的方法,MariaDB Galera Cluster是MariaDB数据库的同步多主集群,涉及云平台基础数据库领域,包括:当MariaDB Galera Cluster的节点掉电并上电后,上报所有节点的状态ID至服务发现集群中;遍历节点的状态ID,并判断当前状态ID的值是否为所有节点状态ID的值中最大,若是,则启动当前状态ID对应节点的服务,若否,则跳过;当最大值的状态ID对应的节点服务启动后,启动所有其它节点的服务。本发明专利技术能够快速恢复云平台基础数据库服务。

【技术实现步骤摘要】
一种自动恢复掉电的MariaDBGaleraCluster的方法
本专利技术涉及云平台基础数据库领域,具体涉及一种自动恢复掉电的MariaDBGaleraCluster的方法。
技术介绍
数据库是云平台的基础组件,如何保证数据库的高可靠性是云平台建设需重点专注的项目。为保证云平台运行的高效性,现如今普遍采用MariaDBGaleraCluster,MariaDBGaleraCluster是MariaDB数据库的同步多主集群,但数据库集群在全部掉电并再次上电后,数据库集群的功能无法自动恢复,需人工介入使数据库集群恢复,费时费力,且不符合现如今提倡的自动化社会的建设需求。
技术实现思路
针对现有技术中存在的缺陷,本专利技术的目的在于提供一种自动恢复掉电的MariaDBGaleraCluster的方法,能够快速恢复云平台服务。为达到以上目的,本专利技术采取的技术方案是,包括:当MariaDBGaleraCluster的节点掉电并上电后,上报所有节点的状态ID至服务发现集群中;遍历节点的状态ID,并判断当前状态ID的值是否为所有节点状态ID的值中最大,若是,则启动当前状态ID对应节点的服务,若否,则跳过;当最大值的状态ID对应的节点服务启动后,启动所有其它节点的服务。在上述技术方案的基础上,状态ID的值通过全局事务ID获取。在上述技术方案的基础上,所述节点的状态ID通过启动脚本上报至服务发现集群中。在上述技术方案的基础上,待数据库守护脚本确定所有节点的状态ID均已上报至服务发现集群中后,开始依次遍历节点的状态ID。在上述技术方案的基础上,对于执行非事务性操作时崩溃的MariaDBGaleraCluster:所有节点的状态ID上报至服务发现集群中后,依次遍历节点的状态ID,当首次出现值为-1的状态ID,则启动该状态ID对应的节点的服务,执行数据库恢复服务,当成功恢复一个节点后,启动所有其它节点的服务。在上述技术方案的基础上,所述服务发现集群为Etcd服务发现集群。与现有技术相比,本专利技术的优点在于:当节点掉电并上电后,通过将节点的状态ID的值上报至Etcd服务发现集群中,比对找到状态ID的值最大的节点,并启动该节点的服务,然后启动所有其它节点的服务,从而自动恢复MariaDBGaleraCluster,且整个过程无需人工干预,便能快速恢复云平台基础数据库服务。附图说明图1为本专利技术一种自动恢复掉电的MariaDBGaleraCluster的方法的流程图。具体实施方式以下结合附图对本专利技术作进一步详细说明。参见图1所示,本专利技术提供一种自动恢复掉电的MariaDBGaleraCluster的方法,用于恢复掉电并再次上电的MariaDBGaleraCluster的服务。MariaDBGaleraCluster为一种多主读写的数据库集群,MariaDBGaleraCluster是MariaDB数据库的同步多主集群,MariaDB数据库是MySQL的一个分支,MySQL是一个关系型数据库管理系统。本专利技术包括以下步骤:步骤S1:当MariaDBGaleraCluster的节点掉电并上电后,通过启动脚本上报所有节点的状态ID至服务发现集群中,本实施例中服务发现集群为Etcd服务发现集群;步骤S2:通过数据库守护脚本确定所有节点的状态ID均已上报至Etcd服务发现集群中后,遍历节点的状态ID,并判断当前状态ID的值是否为所有节点状态ID的值中最大,若是,则启动当前状态ID对应节点的服务,若否,则跳过。状态ID的值越大,表示该节点在数据库中所存储信息越全,因此最大状态ID的值的节点必须首先启动。Etcd服务发现集群为一种共享的键值存储系统,用于服务发现。状态ID的值的获取是通过全局事务ID来实现的,可以在grastate.dat文件中找到相应配置,例如某个状态ID的grastate.dat文件的配置为:#GALERAsavedstateversion:2.1uuid:e8dc56f3-ce33-4df8-8b44-c692ac62cc9fseqno:346578973cert_index:其中,seqno字段的值即为节点的状态ID的值,即状态ID的值为grastate.dat文件的配置中seqno字段的值,通过比较seqno字段的值即可判断当前状态ID的值是否为所有节点状态ID的值中最大。一般情况下,通过运行mysqld--wsrep-recover选项,便能够从errorlog中找到全局事务ID。步骤S3:当最大值的状态ID对应的节点服务启动后,启动所有其它节点的服务,此时MariaDBGaleraCluster的全部节点的服务启动,从而恢复云平台的服务。对于执行非事务性操作时崩溃的MariaDBGaleraCluster,例如在执行ALTERTABLE时,此时,seqno字段的值可能为-1,因而,所有节点的状态ID上报至Etcd服务发现集群中后,依次遍历节点的状态ID,当首次出现值为-1的状态ID,则启动该状态ID对应的节点的服务,执行数据库恢复服务,当成功恢复一个节点后,启动所有其它节点的服务,从而恢复云平台的服务。当节点掉电并上电后,通过将节点的状态ID的值上报至Etcd服务发现集群中,比对找到状态ID的值最大的节点,并启动该节点的服务,然后启动所有其它节点的服务,从而自动恢复MariaDBGaleraCluster,且整个过程无需人工干预,便能快速恢复云平台服务。本专利技术不局限于上述实施方式,对于本
的普通技术人员来说,在不脱离本专利技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本专利技术的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。本文档来自技高网
...
一种<a href="http://www.xjishu.com/zhuanli/55/201611132006.html" title="一种自动恢复掉电的MariaDB Galera Cluster的方法原文来自X技术">自动恢复掉电的MariaDB Galera Cluster的方法</a>

【技术保护点】
一种自动恢复掉电的MariaDB Galera Cluster的方法,用于恢复掉电并再次上电的MariaDB Galera Cluster的服务,其特征在于,包括:当MariaDB Galera Cluster的节点掉电并上电后,上报所有节点的状态ID至服务发现集群中;遍历节点的状态ID,并判断当前状态ID的值是否为所有节点状态ID的值中最大,若是,则启动当前状态ID对应节点的服务,若否,则跳过;当最大值的状态ID对应的节点服务启动后,启动所有其它节点的服务。

【技术特征摘要】
1.一种自动恢复掉电的MariaDBGaleraCluster的方法,用于恢复掉电并再次上电的MariaDBGaleraCluster的服务,其特征在于,包括:当MariaDBGaleraCluster的节点掉电并上电后,上报所有节点的状态ID至服务发现集群中;遍历节点的状态ID,并判断当前状态ID的值是否为所有节点状态ID的值中最大,若是,则启动当前状态ID对应节点的服务,若否,则跳过;当最大值的状态ID对应的节点服务启动后,启动所有其它节点的服务。2.如权利要求1所述的一种自动恢复掉电的MariaDBGaleraCluster的方法,其特征在于:状态ID的值通过全局事务ID获取。3.如权利要求1所述的一种自动恢复掉电的MariaDBGaleraCluster的方法,其特征在于:所述节点的状态ID通过启动脚本上报至...

【专利技术属性】
技术研发人员:陈林祥田松
申请(专利权)人:武汉烽火信息集成技术有限公司
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1