MHA介绍和基础、原理、架构、工具介绍

一.MHA简介
软件简介
MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就任于Facebook公司)开发,是一套优秀的做为MySQL高可用性环境下故障切换和主从提高的高可用软件。在MySQL故障切换过程当中, MHA能作到在10~30秒以内自动完成数据库的故障切换操做 ,而且在进行故障切换的过程当中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。
  MHA还提供在线主库切换的功能,可以安全地切换当前运行的主库到一个新的主库中 (经过将从库提高为主库),大概 0.5-2秒 内便可完成。
  该软件由两部分组成: MHA Manager(管理节点)和MHA Node(数据节点) 。MHA Manager能够单独部署在一台独立的机器上管理多个master-slave集群,也能够部署在一台slave节点上。MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中的master节点, 当master出现故障时,它能够自动将最新数据的slave提高为新的master,而后将全部其余的slave从新指向新的master。 整个故障转移过程对应用程序彻底透明。
MHA在生产环境的做用
  一主多从的环境下,MySQL的主从复制是异步或是半同步。
  Master发生故障的时候,有可能一部分(或者所有)的Slave未能获取到最新的binlog,形成Slave之间的binlog转发发生误差。
以下图所示,Master宕机以后,id=102的binlog未能被发送到任何一个Slave上,id=101的binlog只有save2上有,slave3上未能收到id=100和id-101的binlog
若是想要正确恢复:
  • Master必须发出的ID=102的binlog
  • 还要消除各个Slave之间的差别性
MHA能够全自动的处理以上这些
最佳方案
   在MHA自动故障切换过程当中,MHA试图从宕机的主服务器上保存二进制日志,最大程度的保证数据的不丢失,但这并不老是可行的。例如, 若是主服务器硬件故障或没法经过ssh访问,MHA无法保存二进制日志,只进行故障转移而丢失了最新的数据。使用MySQL 5.5的半同步复制,能够大大下降数据丢失的风险。
  MHA能够与半同步复制结合起来。若是只有一个slave已经收到了最新的二进制日志,MHA能够将最新的二进制日志应用于其余全部的slave服务器上,所以能够保证全部节点的数据一致性。
  目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另一台充当从库,由于至少须要三台服务器,出于机器成本的考虑,淘宝也在该基础上进行了改造,目前淘宝TMHA已经支持一主一从。
MHA优势总结
1)Masterfailover and slave promotion can be done very quickly
自动故障转移快
2)Mastercrash does not result in data inconsistency
主库崩溃不存在数据一致性问题
3)Noneed to modify current MySQL settings (MHA works with regular MySQL)
不须要对当前mysql环境作重大修改
4)Noneed to increase lots of servers
不须要添加额外的服务器(仅一台manager就可管理上百个replication)
5)Noperformance penalty
性能优秀,可工做在半同步复制和异步复制,当监控mysql状态时,仅须要每隔N秒向master发送ping包(默认3秒),因此对性能无影响。你能够理解为MHA的性能和简单的主从复制框架性能同样。
6)Works with any storage engine
只要replication支持的存储引擎,MHA都支持,不会局限于innodb
二.工做流程
1)把宕机的master二进制日志保存下来。
2)找到binlog位置点最新的slave。
3)在binlog位置点最新的slave上用relay log(差别日志)修复其它slave。
4)将宕机的master上保存下来的二进制日志恢复到含有最新位置点的slave上。
5)将含有最新位置点binlog所在的slave提高为master。
6)将其它slave从新指向新提高的master,并开启主从复制。
监控全部node节点 MHA功能说明:
二、自动故障切换(failover)
     前提是必须有三个节点存在,而且有两个从库
      (1)选主前提,按照配置文件的顺序进行,可是若是此节点后主库100M以上relay-log 就不会选
      (2)若是你设置了权重,总会切换带此节点;通常在多地多中心的状况下,通常会把权重设置在本地节点。
      (3)选择s1为新主
      (4)保存主库binlog日志
三、从新构建主从
      (1)将有问题的节点剔除MHA
          进行第一阶段数据补偿,S2缺失部分补全90
      (2)s1切换角色为新主,将s2指向新主S1
            s2  change master to s1
      (3) 第二阶段数据补偿
            将保存过来的新主和原有主缺失部分的binlog,应用到新主。
      (4)虚拟IP漂移到新主,对应用透明无感知
      (5)通知管理员故障切换
三.MHA架构图
1.manager能够单独装在任意一台机器上;
2.一个manager能够管理多套mysql集群;
3.建议不要将manager装在主库上(防止主库断电,断网);
4.全部数据库必须安装node包;
5.manager的依赖有node
四.MHA工具介绍
MHA软件由两部分组成,Manager工具包和Node工具包,具体的说明以下:
masterha_check_ssh #检查MHA的

ssh-key masterha_check_repl #检查主从复制状况 node

masterha_manger #启动MHA mysql

masterha_check_status #检测MHA的运行状态sql

masterha_master_monitor #检测master是否宕机 数据库

masterha_master_switch #手动故障转移安全

masterha_conf_host #手动添加server信息服务器

masterha_secondary_check #创建TCP链接从远程服务器架构

masterha_stop #中止MHAapp

 

Node工具包主要包括如下几个工具:

save_binary_logs #保存宕机的master的binlog apply_diff_relay_logs #识别relay log的差别对比 filter_mysqlbinlog #防止回滚事件,截取日志 purge_relay_logs #清除中继日志relay_logs
相关文章
相关标签/搜索