1、环境与条件
已存在主从架构环境
主机名 | IP地址 | 主从角色 | MHA角色 |
---|---|---|---|
leo1 | 192.168.3.2 | Master | MHA-node |
leo2 | 192.168.3.3 | slave | MHA-node |
leo3 | 192.168.3.4 | slave | MHA-node,MHA-manager |
vip | 192.168.3.6 |
主从确保主从状态正常
mysql>show slave status\G;
IO与SQL进程为YES
参数更改
relay_log_purge = 0 #不自动删除relay log 以便于宕机修复数据
log_bin = /data/log/leo-bin #从库开启binlog 以便于宕机修复数据
expire_logs_days=7
log-slave-updates=1
2、配置SSH
MHA在运行是会通过SSH服务连接到其他节点服务器进行检测或复制数据,因此需要集群内可免密码登陆。
在leo1-3内分别执行如下命令:
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.3.2
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.3.3
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.3.4
3、安装MHA Node
对所有mysql节点安装MHA Node
1)安装perl语言
yum install perl-DBD-MySQL -y ###因为MHA用perl 开发
2)安装MHA Node
rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
下载地址
https://code.google.com/archive/p/mysql-master-ha/downloads
3)创建命令软连接方便使用:
ls -s /app/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog
ls -s /app/mysql/bin/mysql /usr/bin/mysql
4)检查MHA账户
grant all privileges on *.* to mha@'192.168.3%' identified by 'mha';
select user,host from mysql.user;
4、MHA-Manager
Manager 可以安装在任何一台机器上。
1)使用epel源安装perl环境
wget -O /etc/yum.repo.d/epel.repo http://mirrors.aliyum.com/repo/eprl-6.repo
2)安装管理节点以来包
yum intall -u perl-Config-Tiny* epel-release perl-Log-Dispatch* perl-Parallel* per-Time*
3)安装MHA-Node
rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
4)安装MHA-Manger
rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm
5、配置MHA管理节点
mkdir -p /etc/mha
mkdir -p /var/log/mha/app1
vi /etc/mha/app1.cnf
[server default]
manager_log=/var/log/mha/app1/manager.log
manager_workdir=/var/log/mha/app1.log
mater_binlog_dir=/app/mysql/data ##MHA保存主库binlog路径
user=mha ##mysql 数据库授权yonghu
password=mha
ping_interval=2 ##监控ping包时间间隔
repl_user=rep ##主从复制用户
repl_password=leo123
ssh_user=root
repot_script=/usr/local/send_report ##故障发生后触发脚本
secondary_check_script=/usr/local/bin/masterha_secondary_check -s leo3 -s leo2 --user=root --master_host=leo1 --master_ip=192.168.3.2 --master_port=3306
########manager 联系不上leo1时会通过leo2、leo3 查看leo1的状态
shutdown_script=""
[server1]
hostname=192.168.3.2
port=3306
[server2]
hostname=192.168.3.4
port=3306
candidate_master=1 ##设定此参数后server2 会将优先升为主库
check_repl_delay=0 ##MHA忽律主从复制延迟
[server3]
hostname=192.168.3.3
port=3306
6、启动及测试
1)检测ssh免密登陆
master_check_ssh -conf=/etc/mha/app1.cnf
2)检测主从复制状态
master_check_repl -conf=/etc/mha/app1.cnf
3)启动MHA
nohup master_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failver < /dev/null > /var/log/mha/app1/manager.log 2>&1 &
##remove_dead_master_conf 在配置文件中删除master信息
##ignore_last_failver 忽律上一次故障切换
7、配置VIP漂移
1)利用keepalived
2)在配置文件中填入以下参数
master_ip_failover_script=/usr/local/bin/master_ip_failover
3)在脚本中加入以下参数
my = $vip= '192.168.3.6';
my $key= 0
my $ssh_start_vip = "/sbin/ifconfig eth0:$key $vip";
my $ssh_stop_vip = "/sbin/ifconfig eth0:$key down";
chmod +x /etc/mha/master_ip_failover