`

MySQL 高可用集群架构 MHA 详解

阅读更多
MySQL 高可用集群架构 MHA 详解

正在搭建mysql高可用集群,些方案不错


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

MHA里有两个角色一个是MHA Node(数据节点)另一个是MHA Manager(管理节点)。

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







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

注:从MySQL5.5开始,MySQL以插件的形式支持半同步复制。如何理解半同步呢?首先我们来看看异步,全同步的概念:

异步复制(Asynchronous replication)

MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主如果crash掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,强行将从提升为主,可能导致新主上的数据不完整。

全同步复制(Fully synchronous replication)

指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。因为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然会受到严重的影响。

半同步复制(Semisynchronous replication)

介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay log中才返回给客户端。相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一定程度的延迟,这个延迟最少是一个TCP/IP往返的时间。所以,半同步复制最好在低延时的网络中使用。

下面来看看半同步复制的原理图:





总结:异步与半同步异同

默认情况下MySQL的复制是异步的,Master上所有的更新操作写入Binlog之后并不确保所有的更新都被复制到Slave之上。异步操作虽然效率高,但是在Master/Slave出现问题的时候,存在很高数据不同步的风险,甚至可能丢失数据。
MySQL5.5引入半同步复制功能的目的是为了保证在master出问题的时候,至少有一台Slave的数据是完整的。在超时的情况下也可以临时转入异步复制,保障业务的正常使用,直到一台salve追赶上之后,继续切换到半同步模式。



工作原理:

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

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

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

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

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

-提升一个slave为新master。

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



目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当从库,因为至少需要三台服务器。

参考 MySQL 高可用集群架构 MHA 详解
  • 大小: 75.2 KB
  • 大小: 159.4 KB
分享到:
评论

相关推荐

    MySQL主要技术原理和常见高可用架构

    **集群架构**: - **架构原理**:使用集群技术(如MySQL Cluster)来提供更高的可用性和可扩展性。 - **应用场景**:适用于需要高度可靠性和高性能的企业级应用。 ### 小结 MySQL的体系结构和存储引擎的选择对于...

    MySQL-MHA集群

    ### MySQL-MHA集群详解 #### 一、MHA简介与特点 MHA(Master High Availability)是一种用于MySQL的高可用性解决方案,它采用Perl语言编写而成。MHA的核心优势在于能够在0~30秒内自动完成数据库的故障切换操作,...

    mha4mysql.zip

    《MySQL主从复制与MHA:mha4mysql详解》 在MySQL数据库系统中,主从复制是一项重要的功能,它允许数据在多个服务器之间进行实时同步,以实现高可用性和故障转移。MHA(Master High Availability)是针对MySQL主从...

    mha4mysql-manager-0.58

    《mha4mysql-manager-0.58:MySQL高可用性解决方案详解》 在数据库管理领域,MySQL作为一款广泛使用的开源关系型数据库管理系统,其稳定性和高可用性至关重要。mha4mysql-manager-0.58是专为MySQL设计的一款高可用...

    mha4mysql-master和mha4mysql-node

    《MySQL主从服务与MHA(Master High Availability)详解》 在MySQL数据库系统中,主从复制是实现高可用性和数据安全的重要手段。当主服务器出现故障时,从服务器能够接管工作,确保业务的连续性。而MHA(Master High ...

    Mysql 5.7.22 MHA 0.57

    【MySQL 5.7.22 MHA 0.57 高可用集群配置详解】 在高可用性环境中,MySQL数据库通常采用主从复制架构,搭配高可用管理工具MHA(Master High Availability)来实现故障切换和数据一致性。本文将详细介绍如何在CentOS...

    mha4mysql-manager+node-0.58.tar.gz

    《MySQL高可用性解决方案——MHA(Master High Availability)详解》 MySQL作为广泛使用的开源数据库系统,其稳定性和高可用性对于业务连续性至关重要。在MySQL的高可用性方案中,MHA(Master High Availability)是...

    mha.tar.gz

    《MySQL集群高可用解决方案——MHA详解》 在数据库领域,数据的安全性和高可用性是至关重要的。MySQL作为广泛使用的开源关系型数据库管理系统,其高可用性架构是系统设计的关键部分。本文将深入探讨一种名为MHA...

    新版 MySQL DBA 高级视频 基于MySQL 5.7 MySQL 8.0版本.rar

    │ 第十五课MySQL8.0高可用架构之MHA和MMM.pdf │ 第十五课MySQL高可用架构之MHA和MMM.pdf │ 第十八课mongo分享-张亚V1.pdf │ 第十六课Redis分享-张亚V2.pdf │ 第十四课MySQL8.0高可用架构之Atlas.pdf │ 第十课...

    生产环境高可用Nacos集群

    生产环境高可用Nacos集群 本节详细探讨使用 MySQL 作为存储...生产环境高可用 Nacos 集群的搭建与配置详解,包括安装 MySQL、配置数据库连接、主机规划、搭建 Nacos 集群、配置代理服务器、测试与优化等方面的内容。

    MySQL 5.7 MHA一主一从

    MHA(Multi-Master Heartbeat Application)是一种用于MySQL集群管理的应用程序,主要用于实现自动化故障转移以及主从复制架构下的高可用性。通过MHA,可以实现在极短的时间内将备用服务器提升为主服务器,从而保证...

    mysql router vs maxscale

    - Percona XtraDB Cluster (PXC):使用Galera Cluster技术,是Percona提供的开源MySQL高可用集群解决方案。 3. 基于复制的高可用技术: - MMM HA:MySQL Multi-Master Replication Manager for High Availability...

    mysql mha搭建以及故障切换.

    MHA(Multi-Master Heartbeat and Automatic failover for MySQL)是一种为MySQL设计的高可用解决方案,它通过心跳检测机制来实现故障自动切换。在MHA中,主要涉及到的角色包括: 1. **Node(节点)**: - **定义*...

    mysql-dba培训视频.rar

    7. **MHA高可用集群架构**: MySQL高可用性集群(MHA)是用于监控和管理MySQL复制的工具,它可以在主服务器故障时自动切换到一个从服务器。MHA不仅包括故障检测,还包括安全的主服务器切换和数据完整性检查,以确保...

    互联网架构高可用方案之QMHA.pptx

    《互联网架构高可用方案之QMHA详解》 在互联网行业中,构建高可用的数据库架构是保障服务稳定性和数据完整性的关键。QMHA(Quorum Manager High Availability)作为一种新兴的高可用方案,旨在解决传统方案如MMM...

    mha读写分离

    ### MHA (Master High Available) 读写分离与高可用性解决方案详解 #### 一、MHA概述 MHA(Master High Available)是MySQL高可用领域内一款成熟且高效的解决方案,它主要应用于实现MySQL环境下的故障自动切换以及...

    mhapath.tar.gz

    【MySQL高可用性详解】 MySQL数据库系统在许多关键业务中起着至关重要的作用,因此确保其高可用性是运维人员的首要任务。"mhapath.tar.gz" 是一个包含相关工具和配置的压缩包,旨在支持MySQL的高可用性设置。下面...

    ppt_all_in_one.zip

    9. **7张图讲明白MySQL高可用MHA架构方案.pptx** - MHA(Master High Availability):介绍MHA工具如何实现MySQL的高可用性,包括主备切换和数据同步机制。 - MHA架构实践:通过图表解释MHA的配置和工作流程。 10...

Global site tag (gtag.js) - Google Analytics