当前位置: 首页 > article >正文

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状态


http://www.kler.cn/news/293171.html

相关文章:

  • 【无标题】一起学习LeetCode热题100道(67/100)
  • Pikachu靶场之RCE漏洞详解
  • 通义灵码助力高校开学第一课,“包”你满意,新学期加油!
  • 后端开发面经系列--快手音视频C++开发
  • 集成电路学习:什么是RAM随机存取存储器
  • 【时时三省】(C语言基础)指针进阶 例题3
  • C++身份证实名认证-实名制-身份证三要素认证-身份认证-身份验真-接口
  • Proxifier代理配置
  • 【奔驰中国-注册安全分析报告】
  • 机器学习-33-机理模型和非机理模型
  • 【Focal Loss 本质】
  • 【开源免费】基于SpringBoot+Vue.JS在线竞拍系统(JAVA毕业设计)
  • 加载SQLite扩展的db.loadExtension方法
  • C#编写上位机通过OPC DA读取西门子PLC数据
  • 大数据开发:可视化组件Redash安装部署
  • springboot整合logback进行日志管理(上篇)
  • etc bashrc和 etc profile傻傻分不清楚?_
  • 怎么在mathtype中打空格 MathType空格键不能用
  • WHAT - React 函数与 useMemo vs useCallback
  • Redis安装步骤——离线安装与在线安装详解
  • 基于uniapp的登录状态保持(APP免登录)
  • 基于yolov8的西红柿检测系统python源码+onnx模型+评估指标曲线+精美GUI界面
  • 【QT】十分钟全面理解 信号与槽的机制
  • Java并发编程实战 04 | 使用WaitNotify时要注意什么?
  • 黑马点评6——优惠券秒杀—Redis消息队列实现异步秒杀
  • 智联云采 SRM2.0 autologin 身份认证绕过漏洞复现
  • Spring、SpringMVC、SpringBoot都是什么,有什么区别
  • 如何使用事件流相关操作
  • Maven聚合与继承
  • 11、Django Admin启用对计算字段的过滤