`
gaojingsong
  • 浏览: 1211461 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Mysql 之MHA介绍

阅读更多

一、MHA基本介绍

MHA是由日本Mysql专家用Perl写的一套Mysql故障切换方案以保障数据库的高可用性,它的功能是能在0-30s之内实现主Mysql故障转移(failover),

 

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

 

该软件由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。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服务器上,因此可以保证所有节点的数据一致性。

 

目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当从库,因为至少需要三台服务器,出于机器成本的考虑,淘宝也在该基础上进行了改造,目前淘宝TMHA已经支持一主一从。我们自己使用其实也可以使用1主1从,但是master主机宕机后无法切换,以及无法补全binlog。master的mysqld进程crash后,还是可以切换成功,以及补全binlog的。

 

MHA故障转移可以很好的帮我们解决从库数据的一致性问题,同时最大化挽回故障发生后的数据。MHA里有两个角色一个是node节点 一个是manager节点,要实现这个MHA,必须最少要三台数据库服务器,一主多备,即一台充当master,一台充当master的备份机,另外一台是从属机,这里实验为了实现更好的效果使用四台机器,需要说明的是一旦主服务器宕机,备份机即开始充当master提供服务,如果主服务器上线也不会再成为master了,因为如果这样数据库的一致性就被改变了。

 

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

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

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

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

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

-提升一个slave为新master。

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



 

二、MHA工作原理:

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

(2)识别含有最新更新的slave;

(3)应用差异的中继日志(relay log)到其他的slave;

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

(5)提升一个slave为新的master;

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

 

MHA软件由两部分组成,Manager工具包和Node工具包,具体的说明如下。

 

Manager工具包主要包括以下几个工具:

masterha_check_ssh              检查MHA的SSH配置状况

masterha_check_repl             检查MySQL复制状况

masterha_manger                 启动MHA

masterha_check_status           检测当前MHA运行状态

masterha_master_monitor         检测master是否宕机

masterha_master_switch          控制故障转移(自动或者手动)

masterha_conf_host              添加或删除配置的server信息

 

Node工具包(这些工具通常由MHA Manager的脚本触发,无需人为操作)主要包括以下几个工具:

save_binary_logs                保存和复制master的二进制日志

apply_diff_relay_logs           识别差异的中继日志事件并将其差异的事件应用于其他的slave

filter_mysqlbinlog              去除不必要的ROLLBACK事件(MHA已不再使用这个工具)

purge_relay_logs                清除中继日志(不会阻塞SQL线程)

 

 

 

  • 大小: 110.1 KB
0
1
分享到:
评论

相关推荐

    MySql数据库MHA高可用详细配置文档

    本文将详细介绍MHA的配置步骤以及与之相关的MySQL主从复制和Keepalived VIP配置。 首先,让我们从简单的主从复制开始。MySQL的主从复制允许数据在主服务器(写操作)和一个或多个从服务器(读操作)之间同步。在...

    MySQL MHA安装包

    包括mha4mysql-manager-0.58.tar.gz, mha4mysql-manager-0.58-0.el7.centos.noarch.rpm, mha4mysql-node-0.58.tar.gz, mha4mysql-node-0.58-0.el7.centos.noarch.rpm, mha4mysql-manager-0.57.tar.gz, mha4mysql-...

    mysql-mha高可用

    MySQL-MHA(MySQL High Availability)是一种用于MySQL集群的高可用性解决方案,旨在提供数据库的自动故障切换和数据恢复功能。MHA是由Google开发并开源的一个工具,它结合了Master Heartbeat(心跳检测)和MySQL...

    mysql-mha-docker20190807.zip

    MySQL-MHA(MySQL High Availability)是一个用于MySQL集群的高可用性解决方案,旨在提供数据库的无缝故障切换和维护。在这个名为“mysql-mha-docker20190807.zip”的压缩包中,包含了实现MHA环境所需的各种配置文件...

    MySQL高可用学习笔记mysqlrouter_MHA.docx

    MySQL 高可用学习笔记 mysqlrouter_MHA 本文档主要讲解了 MySQL Router 和 MHA 的高可用配置和测试步骤。MySQL Router 是一个提供高可用和负载均衡的工具,而 MHA 是一个提供高可用和自动failover 的工具。下面我们...

    mysql-MHA高可用

    MySQL高可用性解决方案MHA(Master High Availability)是一种在MySQL环境中实现主从复制故障自动切换的工具。MHA由两部分组成:MHA Manager和MHA Node。在给定的文件列表中,我们看到`mha4mysql-manager-0.56-0.el6...

    linux-基于DockerCompose构建的MySQLMHA集群

    基于Docker Compose构建的MySQL MHA集群

    mysql集群 mha 安装包

    MHA是一位日本MySQL大牛用Perl写的一套MySQL故障切换方案,来保证数据库系统的高可用.在宕机的时间内(通常10—30秒内),完成故障切换,部署MHA,可避免主从一致性问题,节约购买新服务器的费用,不影响服务器性能...

    企业级mysql基于MHA的高可用集群部署

    基于MHA的企业级MySQL高可用集群部署是指使用MHA(Master High Availability)软件来实现MySQL数据库的高可用性和自动故障切换。MHA是一套优秀的高可用软件,由日本DeNA公司开发,能在 MySQL 高可用性环境下实现自动...

    MYSQL 5.7 MHA(GTID+ROW)部署

    MySQL 5.7 MHA(Master High Availability Manager)是一种用于MySQL数据库集群的高可用性解决方案,特别关注主从复制中的GTID(Global Transaction Identifier)和ROW模式。MHA是由日本MySQL专家Yoshinori ...

    MySQL MHA KEEPALIVE最佳部署指南

    根据提供的文件信息,本文将详细解析“MySQL MHA KEEPALIVE最佳部署指南”中的关键知识点。主要内容包括MHA的优点、MySQL主从复制的安装配置、MHA的安装配置与测试、Keepalived的扩展以及MHA的日常维护命令。 ### ...

    mysql+lvs+keepalive+mha高可用

    在本教程中,我们将探讨一种基于`mysql`、`lvs`(Linux Virtual Server)、`keepalived`以及`MHA`(Master High Availability)的解决方案,这种方案可以实现VIP(Virtual IP)漂移,有效防止因单点故障导致的服务...

    Mysql 5.7.22 MHA 0.57

    本文将详细介绍如何在CentOS 7.4系统上,基于MySQL 5.7.22版本和MHA 0.57进行配置。 ### 一、MHA架构简介 MHA(Master High Availability)是用于管理MySQL主从复制集群的开源工具,它能够监控主库状态,并在主库...

    07_Mysql 5.7.22_mha_ver1.0.docx

    MySQL 5.7.22 和 MHA (Master High Availability) 是用于构建高可用性数据库集群的关键技术,尤其在CentOS 7.4环境中。MHA是一种管理工具,它能够自动检测MySQL主库的故障,并将其中一个从库提升为主库,以确保服务...

    基于Docker Compose构建的MySQL MHA集群.zip

    【标题】基于Docker Compose构建的MySQL MHA集群 在现代云计算环境中,数据库的高可用性和可扩展性是至关重要的。MySQL作为广泛使用的开源关系型数据库,常常需要被部署在集群环境中以确保数据的可靠性。Docker ...

    MySQL之MHA高可用内容解析.docx

    MySQL之MHA高可用内容解析

    mha4mysql安装包.zip

    MySQL是全球最受欢迎的开源数据库系统之一,但在高可用性方面,单个实例的故障可能导致服务中断。为了应对这一挑战,MySQL社区开发了MHA(Master High Availability),一个用于管理MySQL主从复制的工具,旨在提高...

    mha4mysql-0.56 (mha4mysql-manager-0.56.tar.gz mha4mysql-node-0.56.tar.gz)

    **MySQL高可用解决方案:MHA(Master High Availability)** MHA(MySQL High Availability)是一款用于管理MySQL集群的开源工具,其主要目标是提供高可用性和数据一致性。在MySQL环境中,当主服务器出现故障时,...

    CENTOS7环境下配置MYSQL-MHA部署实践

    本文将详细介绍如何在CENTOS7环境下配置MySQL-MHA,并通过实例展示整个部署过程。 #### 系统环境准备 - **硬件环境**: - 硬盘空间:30GB - 内存:8GB - 网卡:集成 - **软件环境**: - 操作系统:CentOS 7 ...

Global site tag (gtag.js) - Google Analytics