一种适用于多种云环境的MySQL应用层高可用系统及方法技术方案

技术编号:22817076 阅读:25 留言:0更新日期:2019-12-14 13:08
本发明专利技术公开了一种适用于多种云环境的MySQL应用层高可用系统及方法,该系统包括多个MySQL实例单元;警卫单元,用于检查MySQL实例单元是否健康;状态存储单元,根据警卫单元的检查结果存储MySQL实例单元状态信息,若MySQL实例单元不健康时,则设置切换标志;切换单元,用于关闭不健康的MySQL实例单元的连接,并创建健康的MySQL实例单元的连接;切换检测单元,定时检测切换标志,若发现有切换标志时,则调用切换单元引发切换。从应用层实现了MySQL高可用,架构简单,基于双节点的双主复制,能适应各种云环境,可以在多个云机房线上使用,切换迅速,不影响业务,用户无感知。

A MySQL application layer high availability system and method for various cloud environments

【技术实现步骤摘要】
一种适用于多种云环境的MySQL应用层高可用系统及方法
本专利技术属于计算机
,具体涉及一种适用于多种云环境的MySQL应用层高可用系统及方法。
技术介绍
MySQL高可用方法,目前比较常见的有以下四种方法:第一种,双节点主从+keepalived/haproxy;第二种,MHA+多节点集群;第三种,zookeeper+proxy;第四种,SAN共享储存。第一种方法(双节点主从+keepalived/haproxy)架构简单,双节点直接切换,缺点是需要额外考虑haproxy、keepalived的高可用机制,特别是在云环境下,因为已经虚拟过了,往往不支持keepalived。第二种方法(MHA+多节点集群)可以进行故障的自动检测和转移,可扩展性更好,三节点/多节点的MySQL发生不可用的概率更低,缺点是相对双节点需要更多的资源;逻辑较为复杂,发生故障后排查问题,定位问题更加困难;可能因为网络分区发生脑裂现象。第三种方法(zookeeper+proxy)较好的保证了整个系统的高可用性,扩展性较好,缺点是引入zk,整个系统的逻辑变得更加复杂。第四种方法(SAN共享储存)两节点即可,部署简单,切换逻辑简单;很好的保证数据的强一致性;缺点是需要考虑共享存储的高可用,价格昂贵。由上述可知,现有比较常见的MySQL高可用方法均存在诸多不足,因此亟需一种架构简单且能适用于多种云环境的系统出现。
技术实现思路
为了解决上述问题,本专利技术提供了一种适用于多种云环境的MySQL应用层高可用系统,架构简单,能够适应多种云环境。本专利技术的技术方案为:一种适用于多种云环境的MySQL应用层高可用系统,包括:多个MySQL实例单元;警卫单元,用于检查MySQL实例单元是否健康;状态存储单元,根据警卫单元的检查结果存储MySQL实例单元状态信息,若MySQL实例单元不健康时,则设置切换标志;切换单元,用于关闭不健康的MySQL实例单元的连接,并创建健康的MySQL实例单元的连接;切换检测单元,定时检测切换标志,若发现有切换标志时,则调用切换单元引发切换。本专利技术可以应用于多种云环境,例如可以应用于阿里云、腾讯云、华为云以及百度云等各种云环境。作为优选,所述MySQL实例单元为两个,两个MySQL实例单元主主复制。MySQL实例单元主主复制可以使得切换后的数据自动同步,不需要切换后人工处理数据。作为优选,还包括用于直接读取状态存储单元的记录信息的切换监控单元、用于查询系统状态信息的系统状态查询接口以及供人工介入切换的手工切换接口。本专利技术中手工切换接口主要是为了维护的需要,有的时候,运维需要维护MySQL实例单元,可以调用此手工切换接口先切换再停机维护。切换前后,还可调用系统状态查询接口当前状态,保证正确切换。而切换监控单元则可直接读取状态存储单元的记录,发现有切换时及时报警,以便人工介入切换回来,一般在业务低峰期切回。作为优选,所述警卫单元定时连接各个MySQL实例单元,若固定时间内连接成功,则向状态存储单元报告健康,否则报告不健康。为了确保检查的准确性,作为优选,所述警卫单元为多个,多个警卫单元的连接相互独立,当半数或半数以上的警卫单元报告不健康时,则在状态存储单元设置切换标志。本专利技术中通过多个警卫单元进行检查,而且为了保证可靠性和不干扰业务,警卫单元的连接是独立的,和业务连接池没有关系。作为进一步优选,所述警卫单元为至少三个。作为优选,所述切换检测单元为多个,切换开始后,若切换检测单元都响应了,或者有其中一个超时未响应,则删除切换标志。本专利技术中切换单元主要用于关闭旧实例(不健康的MySQL实例单元)连接,创建新实例的连接,在切换中间态,可以短暂进入连接保护,直接返回切换中的提示,不去连接新旧实例。为了保证切换的可用性,各切换单元独立并行切换,使得复杂网络情况下个别切换不成功时,也不会影响整体可用性。为了保证复制的数据一致性,切换时可做适当的等待,当所有切换检测单元切换成功后,警卫单元则删除切换标志。作为优选,所述状态存储单元为redis,所述切换检测单元以api包形式集成。本专利技术中切换检测单元一般以api包形式集成到各项目中,定时检测切换标志,如果发现有切换标志,则调用切换单元引发切换。本专利技术中状态存储单元为redis,redis自身的sentinel机制保证高可用。为了防止偶发的网络故障,本专利技术还可以采用轮询机制保证可靠性,若该次存取有问题,可以再来一次。本专利技术还提供了一种适用于多种云环境的MySQL应用层高可用方法,包括以下步骤:S1、每个MySQL实例单元启动一个连接检查线程定时任务,若固定时间内连接成功,则MySQL实例单元健康,否则不健康;S2、若MySQL实例单元不健康时,对MySQL实例单元进行切换,即关闭不健康的MySQL实例单元的连接,并创建健康的MySQL实例单元的连接。作为优选,所述步骤S1中通过警卫单元对MySQL实例单元进行检查,所述警卫单元的检查流程包括:S1-1、系统启用时初始化,每个MySQL实例单元启动一个连接检查线程定时任务;S1-2、若固定时间内连接成功,则向状态存储单元包括健康,否则报告不健康;S1-3、若状态存储单元接收的报告为不健康时,则状态存储单元设置切换标志和该次切换开始时间。作为优选,所述警卫单元的数量为多个,多个警卫单元的连接相互独立,当半数或半数以上的警卫单元报告不健康时,则在状态存储单元设置切换标志。本专利技术中通过多个警卫单元进行检查,而且为了保证可靠性和不干扰业务,警卫单元的连接是独立的,和业务连接池没有关系。一般情况下,警卫单元设置3个以上。作为优选,通过切换检测单元检测是否存在切换标志,切换开始后,监控切换检测单元的响应,如果都响应了,或者至少一个超时没有响应,则删除切换标志,继续执行定时任务,准备下一次切换。为了防止频繁的切换,作为优选,固定时间内只能切换一次。作为进一步优选,3分钟内只能切换一次。作为优选,所述步骤S2中通过切换单元进行切换,切换的流程包括:S2-1、系统启用时初始化,每个MySQL实例单元启动一个切换检测线程定时任务;S2-2、如果切换检测单元检测到切换标志,则调用切换单元引发切换,并向状态存储单元报告自己已响应切换。作为优选,所述步骤S2-2中切换时,首先停止不健康的MySQL实例单元的相关连接,然后加入维护集合,再建立新的MySQL实例单元的连接,新连接建立完成后,退出暂时的维护态,开始正常业务操作。作为优选,所述切换时间为5~15秒。本专利技术中可以设置最短的切换时间5秒,便于给复制留存时间,而且为了防止长时间切换不成功,可以设置最长的切换时间为15秒。与现有技术相比,本专利技术的有益效果体现在:本专利技术从应用层实现了MySQL高可用,架构简单,基于双节点的双主复制,能适应各种云环境,可以在多个云机房本文档来自技高网...

【技术保护点】
1.一种适用于多种云环境的MySQL应用层高可用系统,其特征在于,包括:/n多个MySQL实例单元;/n警卫单元,用于检查MySQL实例单元是否健康;/n状态存储单元,根据警卫单元的检查结果存储MySQL实例单元状态信息,若MySQL实例单元不健康时,则设置切换标志;/n切换单元,用于关闭不健康的MySQL实例单元的连接,并创建健康的MySQL实例单元的连接;/n切换检测单元,定时检测切换标志,若发现有切换标志时,则调用切换单元引发切换。/n

【技术特征摘要】
1.一种适用于多种云环境的MySQL应用层高可用系统,其特征在于,包括:
多个MySQL实例单元;
警卫单元,用于检查MySQL实例单元是否健康;
状态存储单元,根据警卫单元的检查结果存储MySQL实例单元状态信息,若MySQL实例单元不健康时,则设置切换标志;
切换单元,用于关闭不健康的MySQL实例单元的连接,并创建健康的MySQL实例单元的连接;
切换检测单元,定时检测切换标志,若发现有切换标志时,则调用切换单元引发切换。


2.如权利要求1所述的适用于多种云环境的MySQL应用层高可用系统,其特征在于,所述MySQL实例单元为两个,两个MySQL实例单元主主复制。


3.如权利要求1或2所述的适用于多种云环境的MySQL应用层高可用系统,其特征在于,所述警卫单元定时连接各个MySQL实例单元,若固定时间内连接成功,则向状态存储单元报告健康,否则报告不健康。


4.如权利要求3所述的适用于多种云环境的MySQL应用层高可用系统,其特征在于,所述警卫单元为多个,多个警卫单元的连接相互独立,当半数或半数以上的警卫单元报告不健康时,则在状态存储单元设置切换标志。


5.如权利要求1、2或4所述的适用于多种云环境的MySQL应用层高可用系统,其特征在于,所述切换检测单元为多个,切换开始后,若切换检测单元都响应了,或者有其中一个超时未响应,则删除切换标志。


6.如权利要求5所述的适用于多种云环境的MySQL应用层高可用系统,其特征在于,还包括用于直接读取状态存储单元的记录信息的切换监控单元、用于查询系统状态信息的系统状态查询接口以及供人工介入切换的手工切换接口。


7.如权利要求6所述的适用于多种云环境的MySQL应用层高可用系统,其特征在于,所述状态存储...

【专利技术属性】
技术研发人员:金新华赖少飞徐克强
申请(专利权)人:杭州衣科信息技术有限公司
类型:发明
国别省市:浙江;33

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

1