架构图
一、环境说明
是否还记得我的机器选择的节点是130呢,看看mha通信是否正常,其他的先别整,跟着我走
常用命令说明
请确保mha服务正常启动,别跟着执行哦,这是做个记录🐱👤
manager组件
masterha_check_ssh | 检查 MHA 的 SSH 配置状况 |
---|---|
masterha_check_repl | 检查 MySQL 复制状况 |
masterha_manger | 启动 manager的脚本 |
masterha_check_status | 检测当前 MHA 运行状态 |
masterha_master_monitor | 检测 master 是否宕机 |
masterha_master_switch | 控制故障转移(自动或者手动) |
masterha_conf_host | 添加或删除配置的 server 信息 |
masterha_stop | 关闭manager |
node组件
save_binary_logs | 保存和复制 master 的二进制日志 |
---|---|
apply_diff_relay_logs | 识别差异的中继日志事件并将其差异的事件应用于其他的 slave |
filter_mysqlbinlog | 去除不必要的 ROLLBACK 事件 |
检查ssh |
masterha_check_ssh --conf=/etc/mha/app1.cnf
检查复制情况 |
masterha_check_repl --conf=/etc/mha/app1.cnf
[root@d-sn-003 scripts]# masterha_check_repl —conf=/etc/mha/app1.cnf …..省略输出 |
检查mha状态 |
masterha_check_status --conf=/etc/mha/app1.cnf
[root@d-sn-003 scripts]# masterha_check_status –conf=/etc/mha/app1.cnf …..省略输出 app1 is stopped(2:NOT_RUNNING). |
启动MHA Manager,推荐使用这个,有啥区别,查阅linux黑洞 |
nohup masterha_manager --conf=/etc/mha/app1.cnf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &
关闭 MHA-manager |
masterha_stop --conf=/etc/mha/app1.cnf
二、配置vip
找到mha4mysql-manager/samples/scripts下面的几个执行文件。看过我其他两篇文章的人知道,我的在下面放着。
[root@d-sn-003 scripts]# pwd /etc/mha/scripts [root@d-sn-003 scripts]# ls master_ip_failover master_ip_online_change power_manager send_report
master_ip_failover | 自动切换时 VIP 管理的脚本 |
---|---|
master_ip_online_change | 在线切换时 vip 的管理 |
power_manager | 故障发生后关闭主机的脚本 |
send_report | 因故障切换后发送报警的脚本 |
修改内容如下:(删除原有内容,直接复制并修改vip相关参数,vip自定义)
echo '' > /etc/mha/scripts/master_ip_failover vim /etc/mha/scripts/master_ip_failover
#!/usr/bin/env perl use strict; use warnings FATAL => 'all'; use Getopt::Long; my ( $command, $ssh_user, $orig_master_host, $orig_master_ip, $orig_master_port, $new_master_host, $new_master_ip, $new_master_port ); #############################添加内容部分######################################### my $vip = '192.168.32.231'; #指定vip的地址,虚拟网卡地址 my $brdc = '192.168.32.255'; #指定vip的广播地址。广播地址,和真实网卡一致,见下面红色的标记 my $ifdev = 'ens33'; #指定vip绑定的网卡 my $key = '1'; #指定vip绑定的虚拟网卡序列号 my $ssh_start_vip = "/sbin/ifconfig ens33:$key $vip"; #代表此变量值为ifconfig ens33:1 192.168.32.130 my $ssh_stop_vip = "/sbin/ifconfig ens33:$key down"; #代表此变量值为ifconfig ens33:1 192.168.32.130 down my $exit_code = 0; #指定退出状态码为0 #my $ssh_start_vip = "/usr/sbin/ip addr add $vip/24 brd $brdc dev $ifdev label $ifdev:$key;/usr/sbin/arping -q -A -c 1 -I $ifdev $vip;iptables -F;"; #my $ssh_stop_vip = "/usr/sbin/ip addr del $vip/24 dev $ifdev label $ifdev:$key"; ################################################################################## GetOptions( 'command=s' => \$command, 'ssh_user=s' => \$ssh_user, 'orig_master_host=s' => \$orig_master_host, 'orig_master_ip=s' => \$orig_master_ip, 'orig_master_port=i' => \$orig_master_port, 'new_master_host=s' => \$new_master_host, 'new_master_ip=s' => \$new_master_ip, 'new_master_port=i' => \$new_master_port, ); exit &main(); sub main { print "\n\nIN SCRIPT TEST====$ssh_stop_vip==$ssh_start_vip===\n\n"; if ( $command eq "stop" || $command eq "stopssh" ) { my $exit_code = 1; eval { print "Disabling the VIP on old master: $orig_master_host \n"; &stop_vip(); $exit_code = 0; }; if ($@) { warn "Got Error: $@\n"; exit $exit_code; } exit $exit_code; } elsif ( $command eq "start" ) { my $exit_code = 10; eval { print "Enabling the VIP - $vip on the new master - $new_master_host \n"; &start_vip(); $exit_code = 0; }; if ($@) { warn $@; exit $exit_code; } exit $exit_code; } elsif ( $command eq "status" ) { print "Checking the Status of the script.. OK \n"; exit 0; } else { &usage(); exit 1; } } sub start_vip() { `ssh $ssh_user\@$new_master_host \" $ssh_start_vip \"`; } ## A simple system call that disable the VIP on the old_master sub stop_vip() { `ssh $ssh_user\@$orig_master_host \" $ssh_stop_vip \"`; } sub usage { print "Usage: master_ip_failover --command=start|stop|stopssh|status --orig_master_host=host --orig_master_ip=ip --orig_master_port=port --new_master_host=host --new_master_ip=ip --new_master_port=port\n"; }
说明文件: