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 详解
正在搭建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 详解
发表评论
-
linux 安装mysql多个实例
2020-03-13 15:47 423mysql5.7.28多实例 安装mysql,不要启动 创 ... -
mongodb安全验证 密码登录
2020-03-09 16:07 8121、创建用户 cd /d C:\Program Files\ ... -
索引的创建对查询性能影响
2019-08-19 15:14 681索引的正确使用,对查询的性能影响很大 原查询,要2分多 ... -
mysql查询性能优化,650秒优化到0.18秒
2019-08-14 17:57 29开发人员技术水平不一,写出的sql执行性能怎么样,完全靠运气, ... -
B+tree 索引
2018-03-09 09:11 744mysql和oracle都用到B+tree ... -
怎么查看和修改 MySQL 的最大连接数
2018-03-09 08:47 1117通常,mysql的最大连接数默认是100, 最大可以达到163 ... -
mysql 删除重复记录 保留一条
2018-01-25 10:47 1168-- 方法一 /** 错误码: 1093 You ... -
rsync备份和删除指定文件
2018-01-02 10:23 2051文件异地备份时,需要将本地文件合并到服务器上,且不能删除服务器 ... -
windows mysql定时备份任务
2017-11-03 16:12 1000mysqlbak.cmd echo off set tx ... -
mysql 1418错误原因及解决
2017-09-30 11:14 1135SET GLOBAL log_bin_trust_functi ... -
windows上oracle11配置监听器
2017-08-23 14:00 1769oracle11 windows版安装后默认通过计算机名 ... -
centos yum 安装mysql
2016-08-11 10:08 527查看这篇文章 http://dev.mysql.com/dow ... -
expdp\impdp及exp\imp
2016-08-03 14:29 754作者写的文章很实用 ht ... -
oracle drop记录
2016-07-21 14:07 1587数据库中缺表了,查一下是什么时候删除的 select * ... -
powerdesigner 16 从数据库生成表结构无响应
2016-07-15 09:35 1323怪事了,powerdesigner从数据库反向生成表结构是,卡 ... -
oracle 删除和重建表空间脚本
2016-07-07 11:23 2605调试数据库生成脚本,需要频繁重建表空间 /** ... -
plsql11 x64 安装和配置 解决OCI: not initialized
2016-06-18 09:38 16914下载了instantclient-basic-windows. ... -
oracle instantclient和plsql配置
2016-05-23 14:47 7371、下载instantclient 下载后多解压到某文件夹下 ... -
oracle AL32UTF8 zhs16gbk 安装字符编码
2016-05-23 14:30 1548NLS_LANG是环境变量,包括3部分NLS参数:NLS_LA ... -
oracle静默安装
2016-05-23 14:29 644oracle11G静默安装过程——linux环境 1.操作 ...
相关推荐
**集群架构**: - **架构原理**:使用集群技术(如MySQL Cluster)来提供更高的可用性和可扩展性。 - **应用场景**:适用于需要高度可靠性和高性能的企业级应用。 ### 小结 MySQL的体系结构和存储引擎的选择对于...
### MySQL-MHA集群详解 #### 一、MHA简介与特点 MHA(Master High Availability)是一种用于MySQL的高可用性解决方案,它采用Perl语言编写而成。MHA的核心优势在于能够在0~30秒内自动完成数据库的故障切换操作,...
《MySQL主从复制与MHA:mha4mysql详解》 在MySQL数据库系统中,主从复制是一项重要的功能,它允许数据在多个服务器之间进行实时同步,以实现高可用性和故障转移。MHA(Master High Availability)是针对MySQL主从...
《mha4mysql-manager-0.58:MySQL高可用性解决方案详解》 在数据库管理领域,MySQL作为一款广泛使用的开源关系型数据库管理系统,其稳定性和高可用性至关重要。mha4mysql-manager-0.58是专为MySQL设计的一款高可用...
《MySQL主从服务与MHA(Master High Availability)详解》 在MySQL数据库系统中,主从复制是实现高可用性和数据安全的重要手段。当主服务器出现故障时,从服务器能够接管工作,确保业务的连续性。而MHA(Master High ...
【MySQL 5.7.22 MHA 0.57 高可用集群配置详解】 在高可用性环境中,MySQL数据库通常采用主从复制架构,搭配高可用管理工具MHA(Master High Availability)来实现故障切换和数据一致性。本文将详细介绍如何在CentOS...
《MySQL高可用性解决方案——MHA(Master High Availability)详解》 MySQL作为广泛使用的开源数据库系统,其稳定性和高可用性对于业务连续性至关重要。在MySQL的高可用性方案中,MHA(Master High Availability)是...
《MySQL集群高可用解决方案——MHA详解》 在数据库领域,数据的安全性和高可用性是至关重要的。MySQL作为广泛使用的开源关系型数据库管理系统,其高可用性架构是系统设计的关键部分。本文将深入探讨一种名为MHA...
│ 第十五课MySQL8.0高可用架构之MHA和MMM.pdf │ 第十五课MySQL高可用架构之MHA和MMM.pdf │ 第十八课mongo分享-张亚V1.pdf │ 第十六课Redis分享-张亚V2.pdf │ 第十四课MySQL8.0高可用架构之Atlas.pdf │ 第十课...
生产环境高可用Nacos集群 本节详细探讨使用 MySQL 作为存储...生产环境高可用 Nacos 集群的搭建与配置详解,包括安装 MySQL、配置数据库连接、主机规划、搭建 Nacos 集群、配置代理服务器、测试与优化等方面的内容。
MHA(Multi-Master Heartbeat Application)是一种用于MySQL集群管理的应用程序,主要用于实现自动化故障转移以及主从复制架构下的高可用性。通过MHA,可以实现在极短的时间内将备用服务器提升为主服务器,从而保证...
- Percona XtraDB Cluster (PXC):使用Galera Cluster技术,是Percona提供的开源MySQL高可用集群解决方案。 3. 基于复制的高可用技术: - MMM HA:MySQL Multi-Master Replication Manager for High Availability...
MHA(Multi-Master Heartbeat and Automatic failover for MySQL)是一种为MySQL设计的高可用解决方案,它通过心跳检测机制来实现故障自动切换。在MHA中,主要涉及到的角色包括: 1. **Node(节点)**: - **定义*...
7. **MHA高可用集群架构**: MySQL高可用性集群(MHA)是用于监控和管理MySQL复制的工具,它可以在主服务器故障时自动切换到一个从服务器。MHA不仅包括故障检测,还包括安全的主服务器切换和数据完整性检查,以确保...
《互联网架构高可用方案之QMHA详解》 在互联网行业中,构建高可用的数据库架构是保障服务稳定性和数据完整性的关键。QMHA(Quorum Manager High Availability)作为一种新兴的高可用方案,旨在解决传统方案如MMM...
### MHA (Master High Available) 读写分离与高可用性解决方案详解 #### 一、MHA概述 MHA(Master High Available)是MySQL高可用领域内一款成熟且高效的解决方案,它主要应用于实现MySQL环境下的故障自动切换以及...
【MySQL高可用性详解】 MySQL数据库系统在许多关键业务中起着至关重要的作用,因此确保其高可用性是运维人员的首要任务。"mhapath.tar.gz" 是一个包含相关工具和配置的压缩包,旨在支持MySQL的高可用性设置。下面...
9. **7张图讲明白MySQL高可用MHA架构方案.pptx** - MHA(Master High Availability):介绍MHA工具如何实现MySQL的高可用性,包括主备切换和数据同步机制。 - MHA架构实践:通过图表解释MHA的配置和工作流程。 10...