logo好方法网

针对MySQLGalera集群故障的检测和恢复方法及系统


技术摘要:
本发明提供一种针对MySQL Galera集群故障的检测和恢复方法及系统,属于云计算技术领域,包括1)采集MySQL Galera集群各个节点监控数据;2)分析监控数据判定MySQL Galera集群是否异常;3)接收MySQL Galera异常告警;4)根据告警类型触发恢复处理程序;5)检查恢复后MySQL G  全部
背景技术:
MySQL在互联网时代,是深受世人瞩目的明星数据库软件。给社会创造了无限价 值,随之而来的是,在MySQL基础之上,产生了形形色色的使用方法、架构及周边产品,比如 MHA、MMM等传统架构模式。然而MySQL的主从模式,天生的不能完全保证数据一致性,很多公 司会花很大人力物力去解决这个问题,而效果却一般,可以说,只能是通过牺牲性能,来获 得数据一致性,但也只是在降低数据不一致性的可能性而已。所以现在就急需一种新型架 构,从根本上解决这样的问题,天生的摆脱掉主从复制模式这样的“美中不足”之处了。 Galera  Cluster的出现就是来解决以上描述的问题;Galera解决的最核心问题是,在三个 实例(节点)之间(奇数节点扩展),它们的关系是对等的,multi-master架构的,在多节点同 时写入的时候,能够保证整个集群数据的一致性、完整性与正确性。 数据库服务无论是在云计算时代还是在传统的IT系统中都是一项基本核心功能 服务,负责业务数据的存储服务。MySQL是最流行的关系型数据库管理系统之一,且开源免 费,大量Web应用选择其作为数据存储应用软件。MySQL  Galera集群的多主对等架构,在多 节点同时写入的时候,能够保证整个集群数据的一致性、完整性与正确性,此种架构得到广 泛应用。因此,确保MySQL  Galera数据库集群的异常及时发现和异常恢复,对保障应用持续 提供服务有现实意义。 MySQL  Galera  Cluster在网络抖动、网卡MTU不一致、节点选举异常等情况下会引 起集群数据的不一致性,且存在不能自动恢复正常的问题。出现此情形时,依赖MySQL数据 库的业务应用会出现连接数据库异常,无法进行数据读写。
技术实现要素:
为了解决以上技术问题,本发明提供了一种针对MySQL  Galera集群故障的检测和 恢复方法,通过检测程序自动发现MySQL  Galera集群异常并能进行自修复,保障数据库服 务的业务连续性。 本发明的技术方案是: 针对MySQL  Galera集群故障的检测和恢复方法,包括以下步骤: (1)MySQL  Galera集群节点运行监测采集程序,同时监测服务端有针对MySQL集群 各节点的数据网连通探测。 (2)每3秒采集周期采集监测指标数据上报监控服务端。 (3)通过对采集数据分析判断出故障类型并触发告警。 (4)通过Restful  API调用传递到故障分类处理模块,判断出对节点的处理动作包 括网络持续丢包或不通,告警运维人员;集群数据不一致则根据判定出的节点进行逐步处 4 CN 111597079 A 说 明 书 2/5 页 理。若MySQL数据库节点系统异常则进行节点的机器的重启。 (5)在故障处理完成后,对MySQL  Galera集群的可用性进行验证,包括:wsrep_ cluster_size=3、wsrep_cluster_status=Primary、wsrep_ready=On数据值是否正常, 集群节点间uuid、seqno是否一致。 (6)验证服务组件连接数据库是否正常,包括对数据库进行查询及测试数据写入 验证。 进一步的,所述步骤(1)中代理程序特指针对MySQL  Galera集群节点关键指标数 据的采集程序。 进一步的,所述步骤(2)采集数据特指针对MySQL  Galera集群状态参数及可用性 的关键指标(MySQL服务状态、网络连通性、MySQL进程状态、wsrep_cluster_size、wsrep_ cluster_status、wsrep_ready  uuid、seqno)。 进一步的,所述步骤(3)异常检测,包括:MySQL服务是否正常、进程ID是否存在、 wsrep_cluster_size、wsrep_cluster_status、wsrep_ready数据值是否正常、集群各节点 uuid、seqno是否一致。 进一步的,所述步骤(4)故障分类处理,对运行MySQL  Galera服务的节点进行重 启、集群不一致时按照恢复程序进行节点重启操作(程序主要实现步骤:停止集群所有 MySQL服务;备份seqno的值最大的节点的my.cnf文件;修改seqno的值最大的节点的my.cnf 的wsrep_cluster_address="gcomm://"值,启动seqno值最大的节点MySQL服务,启动正常 后逐个启动剩余节点;最后关闭seqno的值最大的节点,恢复my .cnf文件,启动MySQL服 务。)。 进一步的,所述步骤(5)恢复检测,指对MySQL  Galera集群的MySQL数据库状态、集 群数据的一致性进行检测,确保MySQL  Galera集群恢复正常且可用。 进一步的,所述步骤(6)服务检测验证,指对使用MySQL作为数据库存储系统的业 务应用进行数据库查询及数据写入操作,保障业务应用持续可用。 本发明还提供了一种云计算环境下云管理平台使用的MySQL  Galera集群故障时 的自动检测和恢复系统,具体包括采集代理模块、异常检测判定模块、告警接收模块、故障 处理模块、恢复核查模块。 1、信息采集代理模块运行在各个MySQL节点,周期性(3s)采集MySQL服务状态、集 群指标数据(网络连通性、MySQL进程状态、wsrep_cluster_size、wsrep_cluster_status、 uuid、seqno),上报监控服务端。 2、异常检测判定模块分析采集的MySQL  Galera的指标数据,来判定MySQLGalera 集群是否发生脑裂、数据不一致。 3、异常检测模块对分析的异常结果产生告警并发送到告警接收模块。 4、故障处理模块根据分析告警信息来判定对MySQL  Galera集群的故障处理:若节 点丢包率高,告警通知运维人员排查丢包原因;若运行的MySQL  Galera节点系统Crash则重 启MySQL节点;若数据库数据不一致则根据seqno的值最大的节点为最新数据节点进行数据 库的恢复操作,具体为:停止集群所有MySQL服务;修改seqno的值最大的节点的my.cnf的 wsrep_cluster_address="gcomm://"值,启动seqno值最大的节点MySQL服务,启动正常后 逐个启动剩余节点;最后关闭seqno的值最大的节点,恢复my.cnf,启动MySQL服务。 5 CN 111597079 A 说 明 书 3/5 页 5、故障处理后调用恢复核查模块检查MySQL  Galera集群状态是否正常,数据是否 一致,业务应用连接数据库是否正常、数据是否可正常读写。 在上述1、2、4阶段是MySQL  Galera集群故障检测及恢复的核心部分,本发明具体 实现了:对MySQL  Galera集群关键服务指标进行采集存储,检测分析模块对数据进行加工 处理判定出集群是否异常,故障处理模块会根据告警类型进行对应处理,特别是当数据库 集群节点间数据不一致时,可在5分钟内对集群进行恢复(网络恢复正常的前提下,数据量 少于)。 本发明的有益效果是 本发明进一步完善了MySQL  Galera集群异常时靠集群自身的恢复机制不能恢复 到正常状态的监控及处理,增强了MySQL  Galera集群服务可用性的能力。MySQLGalera集群 本身有一定的恢复能力,但在网络异常后也存在数据的不一致性,导致数据库服务不能提 供服务。本发明增强了MySQL  Galera集群的故障检测及恢复方法,是对MySQL  Galera集群 故障恢复的补充完善。具体益处:1)准实时性的进行MySQL  Galera集群数据一致的检测,能 及时发现数据不一致的异常并进行相应的告警及自动处理。2)把传统的手动修复模式转化 为处理程序,提高了处理的及时性和效率,也避免的人为手动处理误操作的风险。3)关键服 务连接数据库状态监测能有效发现是否由于数据库异常导致的服务异常。 附图说明 图1是MySQL  Galera集群逻辑架构图; 图2是针对MySQL  Galera集群故障的检测和恢复方法逻辑结构图。
分享到:
收藏