目录
前言
一、MHA概述
MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。
MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。
MHA 的出现就是解决MySQL 单点的问题。单点故障是指在一个系统中提供相同功能的组件只有一
个,如果这个组件失效了,就会影响整个系统功能的正常使用,组成应用系统的各个组件都有可能
成为单点。
MHA(Master HA)是一款开源的 MySQL 的高可用程序,它为 MySQL 主从复制架构提供了
automating master failover 功能。MHA 在监控到 master 节点故障时,会提升其中拥有最新数据的
slave 节点成为新的master 节点,在此期间,MHA 会通过于其它从节点获取额外信息来避免一致
性方面的问题。MHA 还提供了 master 节点的在线切换功能,即按需切换 master/slave 节点。
1、MHA特点
自动故障切换过程中,MHA总会试图从宕机的主服务器上保存二进制日志,最大程度的保证数据
不丢失,但这并不总是可行,例如如果主服务器硬件故障或者无法通过ssh访问,MHA则无法保存
二进制日志,只能进行故障转移而丢失了最新的数据,使用MySQL5.5的半同步复制,可以大大降
低数据去失的风险。MHA可以与半同步复制结合起来。如果只有一个slave已经收到了最新的二进
制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点
的数据一致性,有时候可故意设置从节点慢于主节点,当发生意外删除数据库倒是数据丢失时可从
从节点二进制日志中恢复。目前MHA支持一主多从架构,最少三台服务,即一主两从。
2、MHA 的组成
●MHA Node(数据节点)
MHA Node 运行在每台 MySQL 服务器上。它的作用是定时汇报给主manager节点mysql服务的状
态;监控本地mysql服务功能。
●MHA Manager(管理节点)
借助于node组件,实现健康检查(ssh,主从复制),故障切换功能。
MHA Manager 可以单独部署在一台独立的机器上,管理多个 master-slave 集群;也可以部署在一
台 slave 节点上。MHA Manager 会定时探测集群中的 master 节点。当 master 出现故障时,它可
以自动将最新数据的 slave 提升为新的 master, 然后将所有其他的 slave 重新指向新的 master。
整个故障转移过程对应用程序完全透明。
3、故障切换备选主库的算法
①、一般判断从库的是从(position/GTID)判断优劣,数据有差异,最接近于master的slave,成
为备选主。
③、设定有权重(candidate_master=1),按照权重强制指定备选主。
◆ 默认情况下如果一个slave落后master 100M的relay logs的话,即使有权重,也会失效。
◆ 如果check_repl_delay=0的话,即使落后很多日志,也强制选择其为备选主。
二、搭建 MySQL MHA
1、前期环境准备
①、关闭防火墙及安全子系统
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
②、确认各机台IP
服务器名称 |
操作系统 |
IP地址 |
主要组件 |
MHA manager |
CentOS7.6(64 位) |
192.168.110.132 |
管理节点,安装 manager 组件与node组件 |
Master |
CentOS7.6(64 位) |
192.168.110.128 |
安装mysql5.7、MHA node 组件 |
Slave1 |
CentOS7.6(64 位) |
192.168.110.129 |
安装mysql5.7、MHA node 组件 |
Slave2 |