实现环境
1、一台CentOS7服务器做MHA管理节点,一主二从三台MySQL8.0数据库做数据节点。配置如下:
- MHA:MHA管理节点,IP地址为192.168.8.60。
- Master:主服务器,IP地址为192.168.8.61。
- Slave1:从服务器,IP地址为192.168.8.62。
- Slave2:从服务器,IP地址为192.168.8.63。
集群配置
一、安装MHA数据节点(包括管理节点在内的所有服务器均需安装数据节点)。
1、安装依赖包。MHA由perl语言编写,所以需要安装perl语言相关依赖包。
1.1、安装epel源。

1.2、安装依赖包。

2、解压数据节点代码压缩包。

3、编译源代码并安装。
3.1、编译源代码。

3.2、安装软件。

4、查看安装结果,软件默认安装在目录/usr/local/bin中。

二、安装MHA管理节点。
1、解压管理节点代码压缩包。

2、编译源代码并安装。
2.1、编译预处理。

2.2、编译源代码。

2.3、安装软件。

3、查看安装结果,软件默认安装在目录/usr/local/bin中。

三、配置MHA管理节点。
1、创建MHA管理节点故障自动切换脚本。
1.1、将管理节点压缩包中的示例脚本拷贝至安装目录。

1.2、修改示例脚本中的故障自动切换脚本文件master_ip_failover,增加图中红框内的内容,配置项含义如下:
- $vip:自定义的集群虚拟IP。
- $brdc:虚拟IP的广播地址。
- $ifdev:虚拟IP绑定的网卡。
- $ifdev:虚拟IP绑定的网卡。
- $key:虚拟网卡的序号。
- $ssh_start_vip:开启虚拟网卡的命令。
- $ssh_stop_vip:关闭虚拟网卡的命令。

2、创建MHA管理节点配置文件。
2.1、将管理节点压缩包中的示例配置文件拷贝至/etc下。

2.2、修改配置文件,主要配置项如下:
- user、password:监控主从集群状态的账号。
- repl_user、repl_password:主从复制账号。
- master_ip_failover_script:故障自动切换脚本。
- secondary_check_script:二次检查的脚本命令。
- [server1]、[server2]、[server3] ...:主从复制集群的节点定义,其中candidate_master表示此节点为候选主节点。

3、在MHA管理节点上测试集群。
3.1、测试SSH的连通性,若测试结果最后为“All SSH connection tests passed successfully.”即表示连接成功。

3.2、测试主从复制集群,若测试结果最后为“MySQL Replication Health is OK.”即表示集群状态良好。

集群启动
1、在主从复制集群的Master主节点上开启虚拟IP。
1.1、在数据库主服务器上创建虚拟IP。

1.2、在任意节点上通过虚拟IP登录测试虚拟IP是否生效。

2、在MHA管理节点上启动MHA并进行测试。
2.1、启动MHA管理程序。

2.2、查看MHA集群状态。

集群测试
1、关闭数据库主库并查看日志,日志显示Master节点已切换。

2、再次通过虚拟IP登录MySQL,主从集群仍能正常使用。查看新的Master节点IP可见虚拟IP已漂移至新Master节点。

故障恢复
1、修复集群时需首先将宕掉的主机重新开启并配置为新主机的从机。步骤如下:
- 将新主库的数据全部导出并使用参数−−source−data记录当前日志位置。
- 将宕掉的主机重新开启,导入数据并将其配置为新主机的从机。
- 修改MHA配置文件,将宕掉的主机信息加入并使用candidate_master选项将其设置为候选主机。
- 启动MHA管理节点。