一种mysql高可用的方法及管理节点的制作方法

文档序号:6551843阅读:277来源:国知局
一种mysql高可用的方法及管理节点的制作方法
【专利摘要】本发明提供一种MYSQL高可用的方法及管理节点,该方法包括:检测到主机发生故障后,选择一从机作为新的主机,将前端的请求转移到所述新的主机;建立所述新的主机与从机的主从对应关系。本发明通过MHA方式能够完成mysql失败主机的自动切换以及自动选取新的master、自动将没有应用的binlog应用到全部的slave节点上,同时能够保证切换时间控制在1-2分钟内。
【专利说明】—种MYSQL高可用的方法及管理节点
【技术领域】
[0001]本发明涉及计算机系统设计领域和数据库领域,具体涉及一种MYSQL高可用的方法。
【背景技术】
[0002]数据的重要性对于人们来说重要程度不说自明,在信息时代,数据有着具大的力量,数据库的存在为人们提供了更快的查询,那么在一个web网站中如何做到数据库的高可用,保证持续提供服务,能在0_30s之内实现主Mysql故障转移(failover), MHA(MYSQL高可用)故障转移可以很好的帮我们解决从库数据的一致性问题,同时最大化挽回故障发生后的数据。MHA里有两个角色一个是node节点一个是manager (管理)节点,要实现这个MHA,必须最少要三台数据库服务器,一主多备,即一台充当master (主机),一台充当master的备份机,另外一台是从属机,现有技术中一旦主服务器岩机,备份机即开始充当master提供服务,如主服务器上线也不会再成为master 了,这样数据库的一致性就被改变了,数据不一致将导致用户的数据错误,有可能下的订单没有了,也有可能订单重复等的问题。

【发明内容】

[0003]本发明要解决的技术问题是提供一种MYSQL高可用的方法,以实现mysql失败主机的自动切换。
[0004]为了解决上述技术问题,本发明提供了一种MYSQL高可用的方法,包括:
[0005]检测到主机发生故障后,选择一从机作为新的主机,将前端的请求转移到所述新的主机;
[0006]建立所述新的主机与从机的主从对应关系。
[0007]进一步地,上述方法还具有下面特点:所述选择一从机作为新的主机,包括:
[0008]获取所有从机的日志信息;
[0009]选出日志最全的从机,如所述日志最全的从机只有一个,则将该日志最全的从机作为新的主机,如所述日志最全的从机有两个以上,则获取所述日志最全的从机的中继日志,选出所述中继日志最全的从机,如所述中继日志最全的从机只有一个,则将该中继日志最全的从机作为新的主机,如所述中继日志最全的从机有两个以上,则在所述中继日志最全的从机中随机选择一个作为新的主机。
[0010]进一步地,上述方法还具有下面特点:所述检测到主机发生故障后,还包括:
[0011]如发生故障的主机可以登录,则登录所述发生故障的主机,保存所述发生故障的主机的二进制日志;
[0012]所述选择一从机作为新的主机后,还包括:
[0013]判断所述新的主机与原主机之间是否存在二进制日志差异,如存在,则指示所述新的主机应用所述二进制日志差异。[0014]进一步地,上述方法还具有下面特点:
[0015]如选择所述中继日志最全的从机作为新的主机,还包括:
[0016]判断所述新的主机与所述发生故障的主机之间是否存在中继日志差异,如存在,则指示所述新的主机应用所述中继日志差异。
[0017]进一步地,上述方法还具有下面特点:所述选择一从机作为新的主机后,还包括:
[0018]断开所述发生故障的主机与对应的所有从机的连接。
[0019]进一步地,上述方法还具有下面特点:所述建立所述新的主机与从机的主从对应关系,包括:
[0020]判断从机与所述新的主机是否存在中继日志差异,如存在,则生成中继日志差异文件,将所述中继日志差异文件拷贝到对应的从机上。
[0021]进一步地,上述方法还具有下面特点:所述选择一从机作为新的主机后,还包括:
[0022]指示所述新的主机执行清除从机信息的重置从机操作。
[0023]为了解决上述问题,本发明还提供了一种管理节点,其中,包括:
[0024]处理模块,用于检测到主机发生故障后,选择一从机作为新的主机,将前端的请求转移到所述新的主机;
[0025]建立模块,用于建立所述新的主机与从机的主从对应关系。
[0026]进一步地,上述管理节点还具有下面特点:
[0027]所述处理模块,选择一从机作为新的主机包括:获取所有从机的日志信息;选出日志最全的从机,如所述日志最全的从机只有一个,则将该日志最全的从机作为新的主机,如所述日志最全的从机有两个以上,则获取所述日志最全的从机的中继日志,选出所述中继日志最全的从机,如所述中继日志最全的从机只有一个,则将该中继日志最全的从机作为新的主机,如所述中继日志最全的从机有两个以上,则在所述中继日志最全的从机中随机选择一个作为新的主机。
[0028]进一步地,上述管理节点还具有下面特点:
[0029]所述处理模块,检测到主机发生故障后还用于,如发生故障的主机可以登录,则登录所述发生故障的主机,保存所述发生故障的主机的二进制日志;选择一从机作为新的主机后还用于,判断所述新的主机与原主机之间是否存在二进制日志差异,如存在,则指示所述新的主机应用所述二进制日志差异。
[0030]进一步地,上述管理节点还具有下面特点:
[0031]所述处理模块,如选择所述中继日志最全的从机作为新的主机,则还用于:判断所述新的主机与所述发生故障的主机之间是否存在中继日志差异,如存在,则指示所述新的主机应用所述中继日志差异。
[0032]进一步地,上述管理节点还具有下面特点:
[0033]所述处理模块,选择一从机作为新的主机后还用于:断开所述发生故障的主机与对应的所有从机的连接。
[0034]进一步地,上述管理节点还具有下面特点:
[0035]所述建立模块,具体用于判断从机与所述新的主机是否存在中继日志差异,如存在,则生成中继日志差异文件,将所述中继日志差异文件拷贝到对应的从机上。
[0036]进一步地,上述管理节点还具有下面特点:[0037]所述处理模块,选择一从机作为新的主机后还用于:指示所述新的主机执行清除从机信息的重置从机操作。
[0038]综上,本发明提供一种MYSQL高可用的方法及管理节点,通过MHA方式能够完成my s q I失败主机的自动切换以及自动选取新的mas t er、自动将没有应用的b i η I ο g应用到全部的slave节点上,同时能够保证切换时间控制在1-2分钟内。通过开源的MHA方式搭建一个高可用的mysql集群,既提高了集群环境的健壮性、可靠性有可以利用开源的优势扩展该集群的功能。
【专利附图】

【附图说明】
[0039]图1为本发明实施例的MYSQL高可用的方法的流程图;
[0040]图2为本发明实施例的管理节点的示意图。
【具体实施方式】
[0041]为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。 [0042]当管理节点监控到主库mysql服务停止后,首先对主库进行SSH(Struts,流程控制,Spring,业务流转,Hibernate,数据库操作的封装)登录检查,然后对mysql服务进行健康检查,最后作出Master is down !(主机故障)的判断,master failover (主机失败切换)开始。
[0043]Master (主机)用于提供数据库的读写服务,如果存在vip (虚拟ip地址)的话,那么正常期间vip是保留在master服务器上,当出现故障进行切换的时候,读写服务以及vip会全部切换到master的backup (备份)机器上。
[0044]Slave (从机),用于进行数据库的备份以及进行读负载均衡,以及对数据库进行维护、升级的时候对主数据库进行备份。
[0045]图1为本发明实施例的MYSQL高可用的方法的流程图,如图1所示,本实施例的方法可以包括以下步骤:
[0046]步骤101、检测到主机发生故障;
[0047]管理节点在检查配置信息的过程中,会再次确认主库状态(double check),同时罗列出当前架构中各主机的状态(DeadlAlive,死机|存活)。
[0048]步骤102、选择一从机作为新的主机;
[0049]接下来是处理故障主库,该阶段可以通过定义的脚本,将前端的请求转移到新的主机上,且可以将故障主库的主机关掉(断开主机与所有从机的连接)以避免脑裂带来数据不一致问题。
[0050]本实施例中,可以通过以下步骤选择最新从机作为新的主机:
[0051]步骤102.1:获取最新从机;
[0052]针对所有的从机,通过show slave status (显示从属机状态)命令输出的{Master_Log_File (主机日志文件),Read_Master_Log_Pos (读取主机日志位置)}值,对所有从机的{Master_Log_File, Read_Master_Log_Pos}值进行比较,选出日志最全的从机作为latest slaves (最新从机)。此时选出的最新从机可能有多个,也有可能只有一个。如选出的最新从机有多个,则接着执行步骤102.2 ;如选出的最新从机只有一个,则将该最新从机作为新的主机,则执行步骤102.3。
[0053]保存故障主机的binlog (二进制日志),判断所有最新从机与原主机之间是否存在binlog差异,binlog差异越小说明数据丢失越小。
[0054]当原主机发生故障时,如果原主机可以登录,那么可以将原主机出现故障时的binlog保存下来,如果原主机不能登录,则跳过此步骤。
[0055]步骤102.2:确定新主机;
[0056]根据步骤102.1 找出的 latest slaves,确认 latest slave 的 relay log(中继日志)是否为最全的,选择relay log最全的latest slave作为新主机。如relay log最全的latest slave也有多个,则随机挑选一个latest slave作为新主机。
[0057]如果原主机还活着,则对比新主机的relay log与原主机的binlog,如两者之间有差异,则将新主机的relay log与原主机的binlog的差异加载过来。
[0058]等待新主机将relay log中已复制过来的语句执行完毕,通过比较Exec_Master_Log_Pos (执行主库日志位置)和Read_Master_Log_Pos (读取主库日志位置),如果Exec_Master_Log_Pos和Read_Master_Log_Pos这两个值有差异的话,在新主机上应用新主机与原主机的relay log差异和主库binlog差异,以保证数据没有丢失。
[0059]步骤103:建立新的主机与从机的主从对应关系;
[0060]恢复从机,开始并行获取从机日志的差异;
[0061]判断从机与新主机是否存在relay log差异,在新主机上执行如下命令apply_diff_relay_logs - command = generate_and_send,生成 relay log 差异文件,并将 relaylog差异文件拷贝到对应的从机上,以使得所有的从机都是最新状态。
[0062]最后,新主机可以执行reset slave (重置从机)操作清除之前slave信息。
[0063]本发明通过manager节点监控所有的数据库节点的存活,当发现master节点发生故障,那么接下来就是如何选出新的master节点了以及如何将所有的slave节点指向新的master节点,这中间存在如下问题:如何找到所有slave中应用binlog最多的节点,如何找到slave节点与master节点之间的差异,如何在所有的slave中修改指向,通过本实施例的MHA可以自动解决这些问题,而且可以通过自定义脚本来完成一些个性化的工作,为dba(Database Administrator,数据库管理员)提供了发现问题解决问题的新的方法。
[0064]图2为本发明实施例的管理节点的示意图,如图2所示,本实施例的管理节点包括:
[0065]处理模块,用于检测到主机发生故障后,选择一从机作为新的主机,将前端的请求转移到所述新的主机;
[0066]建立模块,用于建立所述新的主机与从机的主从对应关系。
[0067]其中,所述处理模块,选择一从机作为新的主机包括:获取所有从机的日志信息;选出日志最全的从机,如所述日志最全的从机只有一个,则将该日志最全的从机作为新的主机,如所述日志最全的从机有两个以上,则获取所述日志最全的从机的中继日志,选出所述中继日志最全的从机,如所述中继日志最全的从机只有一个,则将该中继日志最全的从机作为新的主机,如所述中继日志最全的从机有两个以上,则在所述中继日志最全的从机中随机选择一个作为新的主机。
[0068]在一优选实施例中,所述处理模块,检测到主机发生故障后还可以用于,如发生故障的主机可以登录,则登录所述发生故障的主机,保存所述发生故障的主机的二进制日志;选择一从机作为新的主机后还用于,判断所述新的主机与原主机之间是否存在二进制日志差异,如存在,则指示所述新的主机应用所述二进制日志差异。
[0069]其中,所述处理模块,如选择所述中继日志最全的从机作为新的主机,则还可以用于:判断所述新的主机与所述发生故障的主机之间是否存在中继日志差异,如存在,则指示所述新的主机应用所述中继日志差异。
[0070]在一优选实施例中,所述处理模块,选择一从机作为新的主机后还可以用于:断开所述发生故障的主机与对应的所有从机的连接。
[0071]其中,所述建立模块,具体可以用于判断从机与所述新的主机是否存在中继日志差异,如存在,则生成中继日志差异文件,将所述中继日志差异文件拷贝到对应的从机上。
[0072]在一优选实施例中,所述处理模块,选择一从机作为新的主机后还可以用于:指示所述新的主机执行清除从机信息的重置从机操作。
[0073]本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
[0074]以上仅为本发明的优选实施例,当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
【权利要求】
1.一种MYSQL高可用的方法,包括: 检测到主机发生故障后,选择一从机作为新的主机,将前端的请求转移到所述新的主机; 建立所述新的主机与从机的主从对应关系。
2.如权利要求1所述的方法,其特征在于:所述选择一从机作为新的主机,包括: 获取所有从机的日志信息; 选出日志最全的从机,如所述日志最全的从机只有一个,则将该日志最全的从机作为新的主机,如所述日志最全的从机有两个以上,则获取所述日志最全的从机的中继日志,选出所述中继日志最全的从机,如所述中继日志最全的从机只有一个,则将该中继日志最全的从机作为新的主机,如所述中继日志最全的从机有两个以上,则在所述中继日志最全的从机中随机选择一个作为新的主机。
3.如权利要求2所述的方法,其特征在于: 所述检测到主机发生故障后,还包括: 如发生故障的主机可以登录,则登录所述发生故障的主机,保存所述发生故障的主机的二进制日志; 所述选择一从机作为新的主机后,还包括: 判断所述新的主机与原主机之间是否存在二进制日志差异,如存在,则指示所述新的主机应用所述二进制日志差异。
4.如权利要求2所述的方法,其特征在于:如选择所述中继日志最全的从机作为新的主机,还包括: 判断所述新的主机与所述发生故障的主机之间是否存在中继日志差异,如存在,则指示所述新的主机应用所述中继日志差异。
5.如权利要求1所述的方法,其特征在于:所述选择一从机作为新的主机后,还包括: 断开所述发生故障的主机与对应的所有从机的连接。
6.如权利要求1-5任一项所述的方法,其特征在于:所述建立所述新的主机与从机的王从对应关系,包括: 判断从机与所述新的主机是否存在中继日志差异,如存在,则生成中继日志差异文件,将所述中继日志差异文件拷贝到对应的从机上。
7.如权利要求1-5任一项所述的方法,其特征在于:所述选择一从机作为新的主机后,还包括: 指示所述新的主机执行清除从机信息的重置从机操作。
8.—种管理节点,其特征在于,包括: 处理模块,用于检测到主机发生故障后,选择一从机作为新的主机,将前端的请求转移到所述新的主机; 建立模块,用于建立所述新的主机与从机的主从对应关系。
9.如权利要求8所述的管理节点,其特征在于: 所述处理模块,选择一从机作为新的主机包括:获取所有从机的日志信息;选出日志最全的从机,如所述日志最全的从机只有一个,则将该日志最全的从机作为新的主机,如所述日志最全的从机有两个以上,则获取所述日志最全的从机的中继日志,选出所述中继日志最全的从机,如所述中继日志最全的从机只有一个,则将该中继日志最全的从机作为新的主机,如所述中继日志最全的从机有两个以上,则在所述中继日志最全的从机中随机选择一个作为新的主机。
10.如权利要求9所述的管理节点,其特征在于: 所述处理模块,检测到主机发生故障后还用于,如发生故障的主机可以登录,则登录所述发生故障的主机,保存所述发生故障的主机的二进制日志;选择一从机作为新的主机后还用于,判断所述新的主机与原主机之间是否存在二进制日志差异,如存在,则指示所述新的主机应用所述二进制日志差异。
11.如权利要求9所述的管理节点,其特征在于: 所述处理模块,如选择所述中继日志最全的从机作为新的主机,则还用于:判断所述新的主机与所述发生故障的主机之间是否存在中继日志差异,如存在,则指示所述新的主机应用所述中继日志差异。
12.如权利要求8所述的管理节点,其特征在于: 所述处理模块,选择一从机作为新的主机后还用于:断开所述发生故障的主机与对应的所有从机的连接。
13.如权 利要求8-12任一项所述的管理节点,其特征在于: 所述建立模块,具体用于判断从机与所述新的主机是否存在中继日志差异,如存在,则生成中继日志差异文件,将所述中继日志差异文件拷贝到对应的从机上。
14.如权利要求8-12任一项所述的管理节点,其特征在于: 所述处理模块,选择一从机作为新的主机后还用于:指示所述新的主机执行清除从机信息的重置从机操作。
【文档编号】G06F17/30GK104036043SQ201410309204
【公开日】2014年9月10日 申请日期:2014年7月1日 优先权日:2014年7月1日
【发明者】初贤哲, 乔鑫, 杨磊 申请人:浪潮(北京)电子信息产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1