mysql -e ‘set global relay_log_purge=0’
注意:
MHA在发生切换的过程中,从库的恢复过程中依赖于relay log的相关信息,所以这里要将relay log的自动清除设置为OFF,采用手动清除relay log的方式。在默认情况下,从服务器上的中继日志会在SQL线程执行完毕后被自动删除。但是在MHA环境中,这些中继日志在恢复其他从服务器时可能会被用到,因此需要禁用中继日志的自动删除功能
mha 没有开启服务
先关闭两个从库的slave进程
mysql> stop slave;
在主库上执行插入操作,而从库没办法同步
mysql> insert into temp2 values(5000,’abc’);
Query OK, 1 row affected (0.00 sec)
主库MySQL直接关闭,两个从库开启复制进程,依旧没有最数据
[root@master01 ~]# /etc/init.d/mysql.server stop
Shutting down MySQL…. SUCCESS!
从库查询刚插入的数据
mysql> select * from temp2 where >
Empty set (0.00 sec)
开启mha进程,发现完成主从切换
查看日志
[root@mycat01 app1]# tail -10 mha_manager.log
Invalidated master IP address on master01.
The latest slave master02(10.0.0.204:3306) has all relay logs for recovery.
Selected master02 as a new master.
master02: OK: Applying all logs succeeded.
master02: OK: Activated master IP address.
slave01: This host has the latest relay log events.
Generating relay diff files from the latest slave succeeded.
slave01: OK: Applying all logs succeeded. Slave started, replicating from master02.
master02: Resetting slave info succeeded.
Master failover to master02(10.0.0.204:3306) completed successfully.
主库已近切换到master02了
5. 查看新的主从是否有5000这条记录
mysql> select * from temp2 where >
+——+——+
| id | name |
+——+——+
| 5000 | abc |
插入成功
可以通过binlog 分析
[root@master01 app1]# mysqlbinlog -v /var/log/masterha/app1/saved_master_binlog_from_master01_3306_20180909014109.binlog
手动failover,这种场景意味着在业务上没有启用MHA自动切换功能,当主服务器故障时,人工手动调用MHA来进行故障切换操作,具体命令如下:
我还原先前的主从关系
先关闭mha进程,确保不会自动执行切换
[root@mycat01 ~]# masterha_stop –conf=/etc/app1.cnf
再关闭maser主库
[root@master01 ~]# /etc/init.d/mysql.server stop
Shutting down MySQL………… SUCCESS!
执行手动切换