一路走来,所有遇到的人,帮助过我的、伤害过我的都是朋友,没有一个是敌人。如有侵权,请留言,我及时删除!
一、MHA软件构成
Manager工具包主要包括以下几个工具:
masterha_manger 启动MHA
masterha_check_ssh 检查MHA的SSH配置状况
masterha_check_repl 检查MySQL复制状况
masterha_master_monitor 检测master是否宕机
masterha_check_status 检测当前MHA运行状态
masterha_master_switch 控制故障转移(自动或者手动)
masterha_conf_host 添加或删除配置的server信息Node工具包主要包括以下几个工具:
这些工具通常由MHA Manager的脚本触发,无需人为操作
save_binary_logs 保存和复制master的二进制日志
apply_diff_relay_logs 识别差异的中继日志事件并将其差异的事件应用于其他的
purge_relay_logs 清除中继日志(不会阻塞SQL线程)
二、安装软件
配置网络YUM源
https://www.cnblogs.com/dgp-zjz/p/11266234.html
1、下载mha软件
mha官网:https://code.google.com/archive/p/mysql-master-ha/
github下载地址:https://github.com/yoshinorim/mha4mysql-manager/wiki/Downloads
2、所有节点安装Node软件依赖包
yum install perl-DBD-MySQL -y
rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
3、db01节点创建用户
db01 [mysql]>grant all privileges on *.* to mha@'%' identified by 'mha';
4、Manager软件安装(db03)生产中会部署在另一台主机。
yum install -y perl-Config-Tiny epel-release perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes
rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm
5、配置文件准备(db03)
root@mysql03 ~]# vi /etc/mha/app.cnf
[server default]
manager_log=/var/log/mha/app/manager
manager_workdir=/var/log/mha/app
master_binlog_dir=/data/binlog
user=mha
password=mha
ping_interval=2
repl_password=123456
repl_user=slave
ssh_user=root
[server1]
hostname=192.168.10.20
port=3306
[server2]
hostname=192.168.10.30
port=3306
[server3]
hostname=192.168.10.40
port=3306
6、信任关系检查
[root@mysql03 /]# masterha_check_ssh --conf=/etc/mha/app.cnf
7、主从关系检查
[root@mysql03 /]# masterha_check_repl --conf=/etc/mha/app.cnf
8、启动MHA
[root@mysql03 ~]# nohup masterha_manager --conf=/etc/mha/app.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null> /var/log/mha/app/manager.log 2>&1 &
检查MHA状态
[root@mysql03 ~]# masterha_check_status --conf=/etc/mha/app.cnf
三、MAH集群维护命令
1、 查看MHA状态
[root@mysql03 ~]# masterha_check_status --conf=/etc/mha/app.cnf
2、MAH成员检查
3、重启MHA集群
masterha_stop --conf=/etc/mha/app1.cnf
nohup masterha_manager --conf=/etc/mha/app.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app/manager.log 2>&1 &
[root@mysql03 ~]# masterha_stop --conf=/etc/mha/app.cnf
[root@mysql03 ~]# masterha_check_status --conf=/etc/mha/app.cnf