此次实验的环境如下
IP地址 | 主从关系 | 复制账号 | 复制格式 |
---|---|---|---|
11.12.14.29 | 主库 | repl | Row-Based |
11.12.14.30 | 从库(半同步/备master) | repl | Row-Based |
11.12.14.39 | 从库(异步) | repl | Row-Based |
11.12.14.40 | 管理节点 | 无 | 无 |
11.12.14.41 | VIP | 无 | 无 |
我们可以先通过 show slave status\G查看从库同步是否正常
我们通过如下命令事实查看切换过程
tail -f /etc/mha/manager/mha.log
我们通过如下命令关闭主库
service mysqld stop
这时我们查看你管理阶段的日志输出
从上图可以看出,首先管理节点发现MySQL服务挂掉,之后调用masterha_secondary_check脚本分别从另外2个从库检查主库,发现也无法连接
从上图可以看出,mha重新读取配置文件并确认数据库状态
接下来进入master failover第一阶段-配置文件确认
这里还是确认阶段
从上图可以看出调用了master_ip_failover脚本将VIP从主库移除
我没有定义shutdown_script,所以没有调用
这个阶段分为如下几个部分
从上图可以看出首先应用日志,之后生成从库重新同步的语句,之后在新主库上启用VIP
该阶段主要为将从库的同步指向新的主库,
这里需要注意的是,如果采用了基于二进制位置点的复制,如果从库启用了GTID,这时会自动采用GTID形式的复制而不是基于位置点的,即 show slave status\G 时auto_position为1
这一阶段首先将新的主库的slave信息清除
如果前面启动mha时加了--remove_dead_master_conf参数,则会将旧的主库的信息删除
最后日志会打印failover过程的报告,如图
以上就是一个完整的failover过程,这时可以手动查看各节点信息
https://www.percona.com/blog/2016/09/02/mha-quickstart-guide/
http://www.ttlsa.com/mysql/step-one-by-one-deploy-mysql-mha-cluster/