MySQL5.7.36之高可用架构部署-MHA-VIP漂移

1、创建文件 vi /usr/local/bin/master_vip_mysql_mha

复制代码
#!/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.31.220/24'; #同一段落IP,需要管理员那边申请
my $key = '1';
my $ssh_start_vip = "/sbin/ifconfig ens33:$key $vip"; #如果你的网卡名称不是ens33,那就需要修改
my $ssh_stop_vip = "/sbin/ifconfig ens33:$key down"; #如果你的网卡名称不是ens33,那就需要修改
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 \"`;
}
sub stop_vip() {
     return 0  unless  ($ssh_user);
    `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";
}

2、将master_vip_mysql_mha文件进行文本转化

复制代码
yum -y install dos2unix*
dos2unix /usr/local/bin/master_vip_mysql_mha

3、将master_vip_mysql_mha文件添加可执行文件

复制代码
chmod +x /usr/local/bin/master_vip_mysql_mha

4、在manager配置文件【server default】中添加master_ip_failover_script记录

复制代码
vi /etc/mha/app1.cnf
master_ip_failover_script=/usr/local/bin/master_vip_mysql_mha

5、在此时的主库上,手动生成第一个vip地址

复制代码
ifconfig ens33:1 192.168.31.220/24
如果指令错误请采用以下指令删除:ifconfig ens33:1 down 

6、重启mha

复制代码
masterha_stop --conf=/etc/mha/app1.cnf #停止
nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 & #启动
masterha_check_status --conf=/etc/mha/app1.cnf #查看MHA状态
相关推荐
斯特凡今天也很帅6 分钟前
clickhouse常用语句汇总——持续更新中
数据库·sql·clickhouse
极简网络科技25 分钟前
Docker、Wsl 打包迁移环境
运维·docker·容器
黑客老李29 分钟前
JavaSec | SpringAOP 链学习分析
java·运维·服务器·开发语言·学习·apache·memcached
杨浦老苏30 分钟前
轻量级Docker管理工具Docker Switchboard
运维·docker·群晖
江湖有缘33 分钟前
【Docker管理工具】部署Docker可视化管理面板Dpanel
运维·docker·容器
超级小忍1 小时前
如何配置 MySQL 允许远程连接
数据库·mysql·adb
RussellFans2 小时前
Linux 文本三剑客(grep, awk, sed)
linux·运维·服务器
吹牛不交税2 小时前
sqlsugar WhereIF条件的大于等于和等于查出来的坑
数据库·mysql
猴哥聊项目管理2 小时前
什么是DevOps智能平台的核心功能?
运维·项目管理·制造·devops·软件·项目管理软件·软件分享