#出现 MySQL Replication Health is OK 字样说明正常。
masterha_check_repl -conf=/opt/mysql-mha/mysql_mha.cnf
11.在 manager 节点上启动 MHAnohup masterha_manager \
--conf=/opt/mysql-mha/mysql_mha.cnf \
--remove_dead_master_conf \
--ignore_last_failover < /dev/null > /var/log/mha_manager.log 2>&1 &
--remove_dead_master_conf:该参数代表当发生主从切换后,老的主库的 ip 将会从配置文件中移除。
--ignore_last_failover:在缺省情况下,如果 MHA 检测到连续发生宕机,且两次宕机间隔不足 8 小时的话,则不会进行 Failover, 之所以这样限制是为了避免 ping-pong 效应。该参数代表忽略上次 MHA 触发切换产生的文件,默认情况下,MHA 发生切换后会在 app1.failover.complete 日志文件中记录,下次再次切换的时候如果发现该目录下存在该文件将不允许触发切换, 除非在第一次切换后删除该文件,为了方便,这里设置为--ignore_last_failover。
●使用&后台运行程序:结果会输出到终端;使用Ctrl C发送SIGINT信号,程序免疫;关闭session发送SIGHUP信号,程序关闭。
●使用nohup运行程序:结果默认会输出到nohup.out;使用Ctrl C发送SIGINT信号,程序关闭;关闭session发送SIGHUP信号,程序免疫。
●使用nohup和&配合来启动程序nohup ./test &:同时免疫SIGINT和SIGHUP信号。
12.查看 MHA 状态,可以看到当前的 master 是 mysql1 节点。masterha_check_status --conf=/opt/mysql-mha/mysql_mha.cnf
#查看 MHA 日志
cat /opt/mysql-mha/manager.log | grep "current master"
13.关闭manager服务masterha_stop --conf=/opt/mysql-mha/mysql_mha.cnf
或
可以直接采用 kill 进程 ID 的方式关闭。
#查看 mysql1 的 VIP 地址 192.168.88.200 是否存在,这个 VIP 地址不会因为 manager 节点停止 MHA 服务而消失。
ifconfig
三、故障模拟1.模拟master故障#在 manager 节点上监控观察日志记录
tail -f /opt/mysql-mha/manager.log
#在 Master 节点 mysql1 上停止mysql服务
systemctl stop mysqld
或
pkill -9 mysql
#正常自动切换一次后,MHA 进程会退出。HMA 会自动修改 app1.cnf 文件内容,将宕机的 mysql1 节点删除。查看 mysql2 是否接管 VIP
ifconfig
2.故障修复2.1修复原master的mysql及主从复制#修复mysql
systemctl restart mysqld
#修复主从
#在现主库服务器 slave1 查看二进制文件和同步点
show master status;
#在原主库服务器 mysql1 执行同步操作
change master to master_host='192.168.88.20',master_user='myslave',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=2375;
start slave;
2.2在 manager 节点上修改配置文件/opt/mysql-mha/mysql_mha.cnf(再把这个记录添加进去,因为它检测掉失效时候会自动消失)secondary_check_script=/usr/local/bin/masterha_secondary_check -s 192.168.88.10 -s 192.168.88.30
......
[server1]
hostname=192.168.88.20
port=3306
[server2]
candidate_master=1
check_repl_delay=0
hostname=192.168.88.10
port=3306
[server3]
hostname=192.168.88.30
port=3306