MySQL高可用架构之MHA详解(3)

mysql -e ‘set global relay_log_purge=0’ 
注意: 
MHA在发生切换的过程中,从库的恢复过程中依赖于relay log的相关信息,所以这里要将relay log的自动清除设置为OFF,采用手动清除relay log的方式。在默认情况下,从服务器上的中继日志会在SQL线程执行完毕后被自动删除。但是在MHA环境中,这些中继日志在恢复其他从服务器时可能会被用到,因此需要禁用中继日志的自动删除功能

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

MHA手动切换

手动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!

执行手动切换

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/431c75c11babaaacce52af47a31b0421.html