下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

MySQL高可用性大杀器之MHA

作者:课课家教育     来源: http://www.kokojia.com点击数:683发布时间: 2017-09-04 08:30:59

标签: 数据库MySQLMHA

  MHA(MasterHighAvailability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。

MHA(MasterHighAvailability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。

  什么是高可用性?

  很多公司的服务都是24小时*365天不间断的。比如CallCenter。这就要求高可用性。再比如购物网站,必须随时都可以交易。那么当购物网的server挂了一个的时候,不能对业务产生任何影响。这就是高可用性。

  MHA是什么?

  MHA(masterhighavailability)是用来保证Mysql集群高可用性的,对master进行监控,发现master出现故障后,自动进行故障转移,从众多slave中选举出新的master,并使其他slave与新master进行同步

  主要特点是故障处理速度快,最大程度上保证数据不丢失

  MHA工作原理

  相较于其它HA软件,MHA的目的在于维持MySQLReplication中Master库的高可用性,其最大特点是可以修复多个Slave之间的差异日志,最终使所有Slave保持数据一致,然后从中选择一个充当新的Master,并将其它Slave指向它。

  -从宕机崩溃的master保存二进制日志事件(binlogevents)。

  -识别含有最新更新的slave。

  -应用差异的中继日志(relaylog)到其它slave。

  -应用从master保存的二进制日志事件(binlogevents)。

  -提升一个slave为新master。

  -使其它的slave连接新的master进行复制。

  MHA优势

  (1)故障处理速度快:一般在30s内就可以完成。

  (2)数据安全性好:slave之间使用差异日志,保证了数据的一致,通过半同步复制的配合,几乎可以保证数据不丢失。

  (3)易扩展:使用Perl开发,开源,开放接口,支持其他语言开发扩展;修改原有功能代码和扩展开发都很方便。

  (4)可以监控多个集群:一个MHA管理服务器可以管理多个集群。

  MHA不足

  (1)只监控master:MHA只保证了master的高可用,并没有监控slave的状态,例如某slave出现复制中断、延迟增加等问题,都是不知道的。

  (2)没有集成虚拟IP的配置:在故障转移时,为使对外透明,需要使用虚拟IP,MHA没有自动实现VIP,需要我们自己实现

  (3)安全问题:MHA要求所有服务器之间都配置SSH免登录,存在一定的安全隐患,如果某台服务器出现了安全问题,那么就可能影响其他服务器。

  MHA该软件由两部分组成:MHAManager(管理节点)和MHANode(数据节点)。MHAManager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上。MHANode运行在每台MySQL服务器上,MHAManager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master。整个故障转移过程对应用程序完全透明。

  在MHA自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志,最大程度的保证数据的不丢失,但这并不总是可行的。例如,如果主服务器硬件故障或无法通过ssh访问,MHA没法保存二进制日志,只进行故障转移而丢失了最新的数据。使用MySQL5.5的半同步复制,可以大大降低数据丢失的风险。MHA可以与半同步复制结合起来。如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数据一致性。

  目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当从库,因为至少需要三台服务器,出于机器成本的考虑,淘宝也在该基础上进行了改造,目前淘宝TMHA已经支持一主一从。

  本次架构实现功能:

  a.一主库,三个从库(其中1个为备主),实现ABBB复制

  b.使用Atlas实现读写分离,主库和备主库接收写操作,从库接收读操作

  c.使用Mha实现现有架构的高可用

  d.使用keepalived实现vip的漂移

  e.手工编写shell,修复Mha的不足

  e1.修复当AB故障切换一次后,mha-manager会自动退出

  e2.修复原主库,出问题后,修复后不能自动加入现有AB集群

  e3.关于relaylog的清除

  本次实现架构图:

MySQL高可用性大杀器之MHA_数据库_MySQL_MHA_课课家教育

  小编结语:

  更多内容尽在课课家教育!

赞(12)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程