简介:masterha_master_switch作为一个切换工具被集成在MHA程序包中,
安装:编译安装MHA manager后会在/usr/local/bin/中生成二进制可执行程序masterha_master_switch。
使用:
$masterha_master_switch --help
Usage:
# For master failover
masterha_master_switch --master_state=dead
--global_conf=/etc/masterha_default.cnf
--conf=/usr/local/masterha/conf/app1.cnf --dead_master_host=host1
# For online master switch
masterha_master_switch --master_state=alive
--global_conf=/etc/masterha_default.cnf
--conf=/usr/local/masterha/conf/app1.cnf
See online reference
(http://code.google.com/p/mysql-master-ha/wiki/masterha_master_switch)
for details.
在这里,我习惯将一套主从的配置都放在app1.cnf中,并且更改为业务相关的名称,如mainBusiness.cnf
分析:
目标:获取masterha_master_switch的在线切换逻辑
环境:MHA manager 192.168.1.8
MHA node1+MySQL5.7+GTID 192.168.1.109+PORT3109 主
MHA node1+MySQL5.7+GTID 192.168.1.110+PORT3110 从
配置文件内容:
manager_workdir=/data/mha/mainBusiness #设置MHA的工作目录
manager_log=/data/mha/mainBusiness/manager.log #MHA manager的日志输出
remote_workdir=/data/mha/ #预设MHA node端的工作目录
master_binlog_dir= /data/mysql/3109/log/,/data/mysql/3110/log/ #预设MHA node端的binlog目录
#secondary_check_script= masterha_secondary_check -s 192.168.1.109 -s 192.168.1.110
secondary_check_script= masterha_secondary_check -s 192.168.1.109 -s 192.168.1.110 --user=root --master_host=192.168.1.109 --master_port=3109
ping_interval=1 #设置MHA manager的检测间隔(1秒)
[server1]
hostname=MySQL-Cent7-IP001109
ip=192.168.1.109
port=3109
ssh_user=root
ssh_port=22
candidate_master=1 #设置该节点是否可以提升为主,1为是,0否
check_repl_delay=0 #发生故障后是否检查本实例主从落后程度,0否,1是
[server2]
hostname=MySQL-Cent7-IP001110
ip=192.168.1.110
port=3110
ssh_user=root
ssh_port=22
candidate_master=1 #设置该节点是否可以提升为主,1为是,0否
check_repl_delay=0 #发生故障后是否检查本实例主从落后程度,0否,1是
在MHA manager端上执行:
$masterha_master_switch --master_state=alive --conf=/etc/mha/mainBusiness.cnf --orig_master_is_new_slave
#--master_state 指明在线切换
#--orig_master_is_new_slave 指定原先的主作为从库挂到新的主上
MHA manager端输出如下
#####################输出段1###########################
[info] MHA::MasterRotate version 0.57.
[info] Starting online master switch.. #开始在线切换
[info]
[info] * Phase 1: Configuration Check Phase.. #阶段1,检查配置
[info]
[warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.. #我这里没有使用全局参数文件,会有报错跳过,没关系
[info] Reading application default configuration from