美文网首页
数据库高可用之QMHA

数据库高可用之QMHA

作者: 爱读书的夏夏 | 来源:发表于2020-03-06 17:39 被阅读0次

    简单介绍:
    MHA(Master High Availability)是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用

    组成部分:
    1.MHA manager,管理节点

    2.MHA node,数据节点

    部署架构:
    MHA manager可以单独部署在一台机器上,管理多个master-slave集群,也可以单独部署在一个slave节点上。MHA manager探测集群的node节点,当发现master故障时,会选取拥有最新数据的slave提升为新的master,然后将其他的slave导向新的master节点,并完成数据的同步,整个故障转移过程对于客户端应用程序来说是完全透明的。

    image.png

    原理介绍:

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

    当master出现故障时,可以通过对比slave之间I/O thread 读取主库binlog的position号,选取最接近的slave做为备选主库(备胎)。其它的从库可以通过与备选主库对比生成差异的中继日志。在备选主库上应用从原来master保存的binlog,同时将备选主库提升为master。最后在其它slave上应用相应的差异中继日志并开始从新的master开始复制。

    过程:

    (1)从宕机崩溃的master保存二进制日志事件(binlog events);

    (2)识别含有最新更新的slave,作为备选主库;

    (3)对比备选主库和其他slave,生成差异的中继日志(relay log);

    (4)应用从master保存的二进制日志事件(binlog events)到备选主库;

    (5)提升提升备选主库为新的master主库;

    (6)在其他slave上应用差异中继日志(relay log);

    (6)使其他的slave连接新的master进行复制;

    优缺点介绍:

    优点:

    1. 故障切换时,可以自行判断哪个从库与主库的数据最接近,就切换到上面,可以减少数据的丢失,保证数据的一致性

    2. 支持 binlog server,可提高 binlog 传送效率,进一步减少数据丢失风险。
    3. 可以配置 mysql 5.7 的增强半同步,来保证数据的时时同步

    注:

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

    关于半同步复制可以参考:http://www.tianfeiyu.com/?p=1663

    缺点:

    1. 自动切换的脚本太简单了,而且比较老化,建议后期逐渐完善。

    2. 搭建 MHA 架构,需要开启 linux 系统互信协议,所以对于系统安全性来说,是个不小的考验。(如果黑客攻破了其中一个节点,那么其他节点也遭殃了)

    相关文章

      网友评论

          本文标题:数据库高可用之QMHA

          本文链接:https://www.haomeiwen.com/subject/iepwrhtx.html