文章目录
1 MHA 工作原理和架构
MHA集群架构
MHA工作原理
- MHA利用 SELECT 1 As Value 指令判断master服务器的健康性,一旦master 宕机,MHA 从宕机崩溃
的master保存二进制日志事件(binlog events) - 识别含有最新更新的slave
- 应用差异的中继日志(relay log)到其他的slave
- 应用从master保存的二进制日志事件(binlog events)
- 提升一个slave为新的master
- 使其他的slave连接新的master进行复制
MHA软件
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信息 |
masterha_stop --conf=app1.cnf | 停止MHA |
masterha_secondary_check | 两个或多个网络线路检查MySQL主服务器的可用 |
**Node工具包:**这些工具通常由MHA Manager的脚本触发,无需人为操作)主要包括以下几个工具:
save_binary_logs | #保存和复制master的二进制日志 |
apply_diff_relay_logs | #识别差异的中继日志事件并将其差异的事件应用于其他的slave |
filter_mysqlbinlog | #去除不必要的ROLLBACK事件(MHA已不再使用此工具) |
purge_relay_logs | #清除中继日志(不会阻塞SQL线程) |
MHA自定义扩展:
secondary_check_script | #通过多条网络路由检测master的可用性 |
master_ip_ailover_script | #更新Application使用的masterip |
shutdown_script | #强制关闭master节点 |
report_script | #发送报告 |
init_conf_load_script | #加载初始配置参数 |
master_ip_online_change_script | #更新master节点ip地址 |
MHA配置文件:
global配置,为各application提供默认配置,默认文件路径 /etc/masterha_default.cnf
application配置:为每个主从复制集群
2 实现 MHA 实战案例
环境:四台主机
- 192.168.100.120 CentOS7 MHA管理端
- 192.168.100.104 CentOS8 MySQL8.0 Master
- 192.168.100.105 CentOS8 MySQL8.0 Slave1
- 192.168.100.106 CentOS8 MySQL8.0 Slave2
2.1 在管理节点上安装两个包mha4mysql-manager和mha4mysql-node
mha4mysql-manager和mha4mysql-node安装包:
链接:https://pan.baidu.com/s/1BvaQBQEdx-9N3w1fy3YnTA?pwd=grc0 提取码:grc0
[root@mha-manager ~]#yum -y install mha4mysql-manager-0.58-0.el7.centos.noarch.rpm
[root@mha-manager ~]#yum -y install mha4mysql-node-0.58-0.el7.centos.noarch.rpm
2.2 在所有MySQL服务器上安装mha4mysql-node包
[root@master ~]#yum -y install mha4mysql-node-0.58-0.el7.centos.noarch.rpm
2.3 在所有节点实现相互之间ssh key验证
[root@mha-manager ~]#ssh-keygen
[root@mha-manager ~]#ssh-copy-id 127.0.0.1
[root@mha-manager ~]#rsync -av .ssh 192.168.100.104:/root/
[root@mha-manager ~]#rsync -av .ssh 192.168.100.105:/root/
[root@mha-manager ~]#rsync -av .ssh 192.168.100.106:/root/
2.4 在管理节点建立配置文件
[root@mha-manager ~]#mkdir /etc/mastermha/
[root@mha-manager ~]#vim /etc/mastermha/app1.cnf
[server default]
user=mhauser
password=magedu
manager_workdir=/data/mastermha/app1/
manager_log=/data/mastermha/app1/manager