数据库集群单点故障的监控系统及方法技术方案

技术编号:9406232 阅读:134 留言:0更新日期:2013-12-05 06:07
本申请公开了一种数据库集群单点故障的监控系统及方法,应用于若干个数据库的数据库集群中,所述数据库包括主库或从库,监控系统包括:若干个数据库代理,至少三个基于分布式协调机制相互通信的协调终端,其中至少三个协调终端中包括一个领导协调终端;一个数据库代理与数据库集群中的一个数据库对应设置在一台服务器上,每个数据库代理中均保存各个协调终端的地址;通过数据库代理定时检测对应数据库的读写状态,领导协调终端根据来自数据库代理的数据库读写状态信息,对数据库集群中的单点故障进行识别,能够高效、可靠地识别数据库集群中的单点故障,能够解决现有技术中,分布式MySQL数据库单点故障的解决方案中存在的效率低下的问题。

【技术实现步骤摘要】
数据库集群单点故障的监控系统及方法
本申请涉及网络通信系统,具体地,涉及一种数据库集群单点故障的监控系统及方法。
技术介绍
目前,互联网公司通常采用数据库集群来存储网站的海量数据。数据库集群的结构如图1所示,主库(Master)1提供对外的读写服务,若干个从库(Slave)2只对外提供读服务,以MySQL数据库为例,主库1和从库2均为MySQL实例,从而图1所示的数据库集群构成一个MySQL集群,每一个MySQL数据库(包括主库和从库)都是一个单点。各个MySQL数据库之间的关系包括:通过复制机制,从库2根据主库1定期发送的日志,不断地从主库1中读取更新的数据,从而使得从库2尽量与主库1的数据保持一致,使得应用端3(Client)从从库2中读取的数据与主库一致。在实际运行中,互联网公司使用的服务器大部分都是普通的个人电脑(PC,PersonalComputer)服务器(Server),PCServer存在一定的故障率,如通常会发生内存异常、主板异常、或者直接宕机,发生故障的PCServer就无法向外提供服务,这就是MySQL数据库的单点故障,如果正好是主库1的机器出现问题,那么应用端3(Client)对主库1写入数据的操作就会受影响,影响到数据库集群对外提供的写服务。目前,针对MySQL数据库的单点故障主要有以下两种解决方案:第一种方案,采用人工干预的解决办法。该方法包括:人工确认主库1是否存活(即正常向外提供读写服务),若存活,则将主库1直接启动,以确定从库2是否能够正常同步,若主库1中的数据损坏或者主库1不存活(即不能正常向外提供读写服务),则选择一台数据较新的从库2作为新主库。具体地,将该新主库设置为可读写的状态,将原主库1的读写状态设置为只读状态,然后通知前端应用或者中间层将数据写入新的主库,从而完成主从数据库的切换。上述过程均需要人工干预。如果主库和从库在同一个网段的话,采用虚拟IP的方式,主备切换不会影响到前端应用或者中间层的切换,影响到数据写入的时间几乎为零;但是,对于主库和从库跨机房部署、不属于同一个网段的情况,主备切换则会影响到前端应用或者中间层的切换,也即对数据的写入造成影响。第二种方案,设置一个单点监控端,打通该单点监控端与所有MySQL数据库之间的信任关系(例如,打通ssh信任关系),从该单点监控端定时与当前的MySQL主库进行通信,以ssh判断方式来判断识别主库是否存活(即可提供写服务),在判断发生单点故障时,调用程序控制实现新的主库的选举,新库的选举过程与上述第一种方案中的主从数据库的切换处理方式类似,在切换完成后,基于ssh信任关系使新主库中的数据与旧主库中的数据保持同步,该方案通过增设单点监控端作为探测源,用它判断主库的故障,从而替代原来的人工判断。上述的方案一中存在人工切换处理效率低、切换时间长、容易丢失写入的数据的问题。而上述方案二中单点监控端必须首先打通与其他MySQL数据库之间的ssh信任关系,这一处理过程仍需人工进行处理、处理过程复杂繁琐、效率较低,对于ssh信任关系的维护也同样复杂繁琐;单点监控端需要基于ssh判断方式对单点故障进行识别,处理过程复杂、低效;并且打通了ssh信任关系后,通过单点监控端就能够访问到其他MySQL数据库的数据,这样对数据安全性造成威胁,并且如果单点监控端与MySQL主库同时发生故障,就无法通过单点监控端来实现主从数据库的切换,从而降低了系统的稳定性。可见,在现有技术中,MySQL数据库集群单点故障的解决方案中存在效率低下、数据安全性差、系统稳定性差的问题。
技术实现思路
针对现有技术中分布式MySQL数据库单点故障的解决方案中存在的效率低下、数据安全性差、系统稳定性差的问题,本申请实施例提供了一种数据库集群单点故障的监控系统,用以解决至少一个上述问题。相应地,本申请实施例还提供了一种数据库集群单点故障的监控方法。本申请实施例技术方案如下:一种数据库集群单点故障的监控系统,应用于包括若干个数据库的数据库集群中,数据库包括主库或从库,监控系统包括:若干个数据库代理,至少三个基于分布式协调机制相互通信的协调终端,其中至少三个协调终端中包括一个领导协调终端;一个数据库代理与数据库集群中的一个数据库对应设置在一台服务器上,每个数据库代理中均保存各个协调终端的地址;数据库代理,用于定时检测对应数据库的读写状态,并将检测得到的数据库读写状态信息发送给领导协调终端;领导协调终端,用于接收来自各个数据库代理的数据库读写状态信息,在超过预定时限未接收到任意一个数据库读写状态信息,或接收到的任意一个数据库读写状态信息为异常时,确定数据库集群中存在单点故障。一种数据库集群单点故障的监控方法,包括:基于分布式协调机制的领导协调终端,接收与数据库集群中的数据库对应设置的数据库代理发送的数据库读写状态信息;领导协调终端在超过预定时限未接收到任意一个数据库读写状态信息、或接收到的任意一个数据库读写状态信息为异常时,确定数据库集群中存在单点故障。根据本申请实施例提供的技术方案,通过数据库代理定时检测数据库集群中对应数据库的读写状态,基于分布式协调机制的领导协调终端根据来自数据库代理的数据库读写状态信息,对数据库集群中的单点故障进行识别,能够高效、可靠地识别数据库集群中的单点故障,从而能够解决现有技术中,分布式MySQL数据库单点故障的解决方案中存在的效率低下的问题。相比于现有技术,本申请实施例提供的技术方案操作简便、监控结果有效可靠。本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。附图说明图1为现有技术中数据库集群的结构示意图;图2为本申请实施例提供的数据库集群单点故障的监控系统的结构框图;图3为本申请实施例提供的数据库集群单点故障的监控方法的流程图;图4为图2中基于分布式协调机制的领导协调终端的工作流程图;图5为本申请实施例具体实施的场景示意图。具体实施方式以下结合附图对本申请的实施例进行说明,应当理解,此处所描述的实施例仅用于说明和解释本申请,并不用于限定本申请。针对现有技术中MySQL数据集群库单点故障的解决方案中存在的效率低下、数据安全性差、系统稳定性差的问题,本申请实施例提供了一种对数据库集群中的单点故障进行监控的方案,以解决至少一个上述问题。在本申请实施例提供的方案中,设置与数据库集群中的数据库相对应的数据库代理,对应设置的数据库和数据库代理位于同一服务器上,设置至少三个基于分布式协调机制的协调终端,其中包括一个领导协调终端、其余为从属协调终端,每个数据库代理中都保存各个协调终端的IP地址和端口。数据库代理定期检测对应数据库的读写状态,并将检测结果上报给领导协调终端,领导协调终端在超过预定时限未接收到任意一个数据库的读写状态、或接收到的任意一个数据库读写状态信息为异常时,确定数据库集群中存在单点故障,能够通过由若干个数据库代理和至少三个协调终端构成的分布式结构,根据各数据库的读写状态信息来识别单点故障,从而能够简便、高效、可靠地识别数据库集群中的单点故障。在本申请实施例的优选实施例中,还能本文档来自技高网
...
数据库集群单点故障的监控系统及方法

【技术保护点】
一种数据库集群单点故障的监控系统,应用于包括若干个数据库的数据库集群中,所述数据库包括主库或从库,其特征在于,所述监控系统包括:若干个数据库代理,至少三个基于分布式协调机制相互通信的协调终端,其中,至少三个所述协调终端中包括一个领导协调终端;一个所述数据库代理与所述数据库集群中的一个数据库对应设置在一台服务器上,每个所述数据库代理中均保存各个所述协调终端的地址;所述数据库代理,用于定时检测对应数据库的读写状态,并将检测得到的数据库读写状态信息发送给所述领导协调终端;所述领导协调终端,用于接收来自各个数据库代理的数据库读写状态信息,在超过预定时限未接收到任意一个所述数据库读写状态信息,或接收到的任意一个数据库读写状态信息为异常时,确定所述数据库集群中存在单点故障。

【技术特征摘要】
1.一种数据库集群单点故障的监控系统,应用于包括若干个数据库的数据库集群中,所述数据库包括主库或从库,其特征在于,所述监控系统包括:若干个数据库代理,至少三个基于分布式协调机制相互通信的协调终端,其中,至少三个所述协调终端中包括一个领导协调终端;一个所述数据库代理与所述数据库集群中的一个数据库对应设置在一台服务器上,每个所述数据库代理中均保存各个所述协调终端的地址;所述数据库代理,用于定时检测对应数据库的读写状态,并将检测得到的数据库读写状态信息发送给所述领导协调终端;所述数据库代理能够对数据库的读写状态进行设置,不能够对数据库中的其他数据进行操作;所述领导协调终端,用于接收来自各个数据库代理的数据库读写状态信息,在超过预定时限未接收到任意一个所述数据库读写状态信息,或接收到的任意一个数据库读写状态信息为异常时,确定所述数据库集群中存在单点故障。2.根据权利要求1所述的系统,其特征在于,所述领导协调终端,具体用于:在超过预定时限未接收到所述主库的读写状态信息或接收到的所述主库的读写状态信息为异常时,确定所述主库发生单点故障,将发生单点故障的所述主库标记为旧主库,通知与读写状态信息正常的从库对应的数据库代理上报所述从库的数据更新状况信息;根据各所述数据库代理上报的所述从库的数据更新状况信息,将数据更新数量最多的从库确定为新主库,指示与所述新主库对应的数据库代理将所述新主库的数据读写状态设置为可读可写;与所述从库对应的数据库代理,根据来自所述领导协调终端的所述通知,获取对应从库的数据更新状况信息,将获取到的从库数据更新状况信息发送给所述领导协调终端;在接收到来自所述领导协调终端的所述指示的情况下,将对应从库的数据读写状态设置为可读可写。3.根据权利要求2所述的系统,其特征在于,所述领导协调终端,还用于:将所述新主库的数据更新状况信息发送给与所述从库对应的数据库代理;与所述从库对应的数据库代理,还用于根据来自所述领导协调终端的所述新主库的数据更新状况信息、以及对应从库的数据更新状况信息,确定对应从库中缺乏的数据,从所述新主库中读取所确定缺乏的数据、并将读取的数据存入到对应从库中。4.根据权利要求3所述的系统,其特征在于,所述领导协调终端,还用于:在能够与所述旧主库对应的数据库代理通信的情况下,指示与所述旧主库对应的数据库代理将所述旧主库的读写状态设置为只读、上报所述旧主库中的数据更新状况信息,并将接收到的所述旧主库的数据更新状况信息发送给与所述新主库对应的数据库代理和与所述从库对应的数据库代理;与所述旧主库对应的数据库代理,还用于:根据来自所述领导协调终端的所述指示,将对应所述旧主库的读写状态设置为只读,获取对应所述旧主库的数据更新状况信息,将获取到的旧主库数据更新状况信息发送给所述领导协调终端;与所述新主库对应的数据库代理,还用于:根据来自所述领导协调终端的所述旧主库的数据更新状况信息、以及对应的所述新主库的数据更新状况信息,确定对应的所述新主库中缺乏的数据,从所述旧主库中读取所确定缺乏的数据、并将读取的数据存入到对应所述新主库中;与所述从库对应的数据库代理,还用于:根据来自所述领导协调终端的所述旧主库的数据更新状况信息、以及对应从库的数据更新状况信息,确定对应从库中缺乏的数据,从所述旧主库中读取所确定缺乏的数据、并将读取的数据存入到对应从库中。5.根据权利要求1所述的系统,其特征在于,所述领导协调终端,还用于:在接收到的所述从库的读写状态信息为异常时,确定所述从库发生单点故障,指示与该从库对应的数据库代理将该从库的读写状态设置为不可用;与所述从库对应的数据库代理,还用于:在接收到来自所述领导协调终端的所述指示的情况下,将对应从库的读写状态设置为...

【专利技术属性】
技术研发人员:朱金清
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:

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

1