此次实验的环境如下
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 | 无 | 无 |
vim /etc/mha/mha.conf
[server default]
# mysql user and password
user=monitor
password=123456
ssh_user=root
# working directory on the manager
manager_workdir=/etc/mha/manager
manager_log=/etc/mha/manager/mha.log
ping_interval=1
# working directory on MySQL servers
remote_workdir=/etc/mha/node
# replication user
repl_user=repl
repl_password=rpl
master_binlog_dir=/oradata/datalog/mysql/binlog
## customized script
master_ip_failover_script=/etc/mha/script/master_ip_failover
master_ip_online_change_script=/etc/mha/script/master_ip_online_change
secondary_check_script=/usr/bin/masterha_secondary_check -s 11.12.14.30 -s 11.12.14.39 --user=root --master_host=11.12.14.29 --master_ip=11.12.14.29 --master_port=3306
[server1]
hostname=shytest
candidate_master=1
[server2]
hostname=shytest2
candidate_master=1
[server3]
hostname=shytest3
no_master=1
接下来我们来解释每个参数的意义
管理节点
root>masterha_check_ssh --conf=/etc/mha/mha.conf
测试通过会有成功字样打印出来
管理节点
root>masterha_check_repl --conf=/etc/mha/mha.conf
测试通过会有成功字样打印出来
通过输出我们可以看到相关架构信息
首先我们可以检测MHA是否已启动
管理节点
root>masterha_check_status --conf=/etc/mha/mha.conf
我们在manager上执行如下命令开启MHA
管理节点
root> nohup masterha_manager --conf=/etc/mha/mha.conf --remove_dead_master_conf &
--remove_dead_master_conf意思为当发生切换后,老的主库信息会从配置文件删除
root> masterha_stop -conf=/etc/mha/mha.conf
前面我们说到我们已经取消了relay log的自动清理,这里需要在主从库3台上设置定时任务手动清理
这里首先需要在root用户环境变量中增加mysql相关路径
主从库三台
export MYSQL_HOME=/usr/local/mysql
export PATH=$HOME/bin:$MYSQL_HOME/bin:$PATH
0 4 1 * * /usr/bin/purge_relay_logs --user=monitor --password=123456 -disable_relay_log_purge --workdir=/tmp/ >> /tmp/purge_relay_logs.log 2>&1
https://www.percona.com/blog/2016/09/02/mha-quickstart-guide/
http://www.ttlsa.com/mysql/step-one-by-one-deploy-mysql-mha-cluster/