MHA架构介绍

目录
简介:
提供的功能:
如何进行主从切换?
演示架构:
优缺点:
简介: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。

提供的功能: 监控主数据库服务器是否可用
当主数据库不可用时,从多个从服务器中选举出新的主数据库服务器
提供了主从切换和故障转移功能

如何进行主从切换? <1>当主DB发生故障时,会尝试从出现故障的主数据库保存二进制日志(而mmm不会去尝试保存最新的二进制日志,所以比mha丢失数据的风险更高)。但这一步并不是总是可以成功的,当mha服务器硬件本身无法访问时,则不能去保存二进制日志
<2>从多个备选从服务器中选取新的备选主服务器。我们可以人为的设置一些服务器不参与选举(在MMM中,只会使用原主服务器的主备服务器来作为新的服务器来使用,它不能保证主备服务器的数据是最新的,这也是MHA优于MMM的一个特性)
<3>在备选主服务器和其他从服务器之间同步差异二进制日志,保证了从服务器上的数据一致
<4>新选举出来的主,会存放刚才从老服务器上所保存下来的二进制日志(前提条件是能够保存下新的二进制日志)
在这一步如果出现错误,如重复的主键等,那么mha就会停止进行故障转移
<5>提升备选主DB服务器为新的主DB服务器,同时进行虚拟ip的切换
<6>迁移集群中的其他从DB作为新的主DB的从服务器

演示架构: MHA架构介绍
文章图片



优缺点:
优点(加强了数据的安全性)
同样是由perl语言开发的开源工具
可以支持基于GTID的复制模式
MHA在进行故障转移时更不易产生数据丢失,因为主从切换过程中,可以根据多个从服务器中已经执行完成的主服务器上的日志来选择具有最新日志的从服务器进行提升为新的主服务器,并且能尽可能多的保存原主服务器上的日志,如果配合mysql半同步复制使用,则可以最大限度的保证已经在主DB上提交的事务不丢失
同一个监控节点可以监控多个集群,并对不同的集群做不同的切换操作,对于多集群来说,可以大幅减少服务器成本,并最大限度提高mysql复制集群的可用性

缺点:
需要编写脚本或利用第三方工具来实现虚拟ip的配置,另外,mha只提供了在主服务器上加vip的功能,不能对从服务器加vip,当某一台从db出现问题时,也不能把他踢出集群中,这一点来说,不如MMM

MHA启动后只会对主数据库服务器进行监控,即MHA在监控运行的过程中无法发现复制链路中断,主从延迟增大这样的问题

在配置MHA作为主从复制架构的监控工具时,要求MHA集群中的所有服务器,包括监控服务器之间要实现ssh免认证配置,即建立ssh的信任连接,这样对于数据库服务器的安全性有一定的影响,因为对于任何一台服务器出现密码泄露的话,都有可能威胁到集群中的所有服务器,特别是使用多集群统一监控的情况下
同mmm一样,没有提供多个从服务器负载均衡的功能,要实现读的负载均衡,必须使用其他的一些方法





【MHA架构介绍】

    推荐阅读