zoukankan      html  css  js  c++  java
  • MHA-Atlas-MySQL高可用(下)

    MHA-Atlas-MySQL高可用(下)

    链接:https://pan.baidu.com/s/17Av92KQnJ81Gc0EmxSO7gA
    提取码:a8mq
    复制这段内容后打开百度网盘手机App,操作更方便哦

    6. 配置VIP漂移

    主机名 IP地址 网卡模式 漂移VIP 描述
    Mysql-Master 192.168.200.123 NAT8 VIP:192.168.200.111 系统:CentOS6.5(6.x都可以)安装:mysql5.6
    Mysql-Slave01 192.168.200.124 NAT8 VIP:192.168.200.111 系统:CentOS6.5(6.x都可以)安装:mysql5.6
    Mysql-Slave02 192.168.200.125 NAT8 VIP:192.168.200.111 系统:CentOS6.5(6.x都可以)安装:mysql5.6

    6.1 IP漂移的两种方式

    • 通过keepalived的方式,管理虚拟IP的漂移
    • 通过MHA自带脚本方式,管理虚拟IP的漂移

    6.2 MHA脚本管理方式

    6.2.1 获取管理脚本master_ip_failover

    提示:yum安装的manager是没有这个脚本的。
    我们需要从manager的源码包里复制一个。

    [root@Mysql-Slave02 yuanmabao]# pwd
    /root/yuanmabao
    [root@Mysql-Slave02 yuanmabao]# ll mha4mysql-manager-0.56.tar.gz
    -rw-r--r--. 1 root root 113914 Oct  5 20:57 mha4mysql-manager-0.56.tar.gz
    [root@Mysql-Slave02 yuanmabao]# tar xf mha4mysql-manager-0.56.tar.gz
    
    [root@Mysql-Slave02 yuanmabao]# cd mha4mysql-manager-0.56/samples/scripts/
    [root@Mysql-Slave02 scripts]# ll
    total 32
    -rwxr-xr-x. 1 4984 users  3648 Apr  1  2014 master_ip_failover    #这就是管理虚拟IP的脚本
    -rwxr-xr-x. 1 4984 users  9870 Apr  1  2014 master_ip_online_change
    -rwxr-xr-x. 1 4984 users 11867 Apr  1  2014 power_manager
    -rwxr-xr-x. 1 4984 users  1360 Apr  1  2014 send_report
    
    [root@Mysql-Slave02 scripts]# cp master_ip_failover /usr/local/bin/
    #复制到/usr/local/bin目录下
    [root@Mysql-Slave02 scripts]# which master_ip_failover
    /usr/local/bin/master_ip_failover
    

    6.2.2 修改mha配置文件

    [root@Mysql-Slave02 ~]# cat /etc/mha/mha1.cnf
    [server default]
    manager_log=/var/log/mha/mha1/manager       
    manager_workdir=/var/log/mha/mha1           
    master_binlog_dir=/usr/local/mysql/data
    master_ip_failover_script=/usr/local/bin/master_ip_failover    #添加脚本位置        
    user=mha                                           
    password=971108                           
    ping_interval=2                                 
    repl_user=rep                                 
    repl_password=971108                        
    ssh_user=root                               
    
    #candidate_master=1      #留着备用的注释项
    #check_repl_delay=0      #留着备用的注释项
                    
    [server1]
    hostname=192.168.200.123                           
    port=3306                                           
    
    [server2]
    hostname=192.168.200.124
    port=3306
    
    [server3]
    hostname=192.168.200.125
    port=3306
    

    6.2.3 修改源程序自带VIP漂移脚本

    #在下边的脚本里添加如下4行代码:
    [root@Mysql-Slave02 ~]# sed -n '34,37p' /usr/local/bin/master_ip_failover
    my $vip = '192.168.200.111/24';      #定义VIP
    my $key = '0';                       #定义网卡后缀数值,如果eth0就是0,eth1就是1
    my $ssh_start_vip = "/sbin/ifconfig eth0:$key $vip";  #绑定VIP的命令
    my $ssh_stop_vip = "/sbin/ifconfig eth0:$key down";   #关闭VIP的命令
    

    特别提示:由于自带的模板脚本特别的坑,需要修改的地方太多,因此,咱们可以直接拷贝脚本文件放到/usr/local/bin目录下,并赋予x权限。

    6.2.4 修改后的master_ip_failover脚本的内容如下:

    [root@Mysql-Slave02 ~]# cat  /usr/local/bin/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.200.111/24';
    my $key = '0';
    my $ssh_start_vip = "/sbin/ifconfig eth0:$key $vip";
    my $ssh_stop_vip = "/sbin/ifconfig eth0:$key down";
    
    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 {
        if ( $command eq "stop" || $command eq "stopssh" ) {
                my $exit_code = 1;
        	eval {
         		print "Disabling the VIP on old master:$orig_master_host 
    ";
          		&stop_vip();
          		$exit_code = 0;
        	};
        	if ($@) {
                warn "Got Error: $@
    ";
          		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 
    ";
          		&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 
    ";
                `ssh $ssh_user@$orig_master_host " $ssh_start_vip "`;
                exit 0;
        }
        else {
                &usage();
                exit 1;
        }
        }
    sub start_vip() {
        `ssh $ssh_user@$new_master_host " $ssh_start_vip "`;
    }
    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
    ";
    }
    

    6.2.5 重启动mha管理端

    [root@Mysql-Slave02 ~]# ps -ef | grep mha | grep -v grep   #查看mha进程
    root      14138  13211  0 19:22 pts/3    00:00:00 perl /usr/bin/masterha_manager --conf=/etc/mha/mha1.cnf --remove_dead_master_conf --ignore_last_failover
    [root@Mysql-Slave02 ~]# pkill perl         #杀掉perl进程
    [1]+  Exit 1                  nohup masterha_manager --conf=/etc/mha/mha1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/mha1/manager.log 2>&1
    [root@Mysql-Slave02 ~]# ps -ef | grep mha | grep -v grep   #查看mha进程
    
    [root@Mysql-Slave02 ~]# nohup masterha_manager --conf=/etc/mha/mha1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/mha1/manager.log 2>&1 &       #启动mha进程
    [1] 1574
    [root@Mysql-Slave02 ~]# ps -ef | grep mha | grep -v grep
    root       1574   1520 17 02:08 pts/0    00:00:00 perl /usr/bin/masterha_manager --conf=/etc/mha/mha1.cnf --remove_dead_master_conf --ignore_last_failover
    

    提示:如果启动mha进程失败,需要进行mha的连接检测


    • masterha_check_ssh --conf=/etc/mha/mha1.cnf ssh #连接检测
    • masterha_check_repl --conf=/etc/mha/mha1.cnf #主从复制检测

    6.3 VIP漂移脚本验证测试。

    架构初始状态:
    image.png-165.1kB

  • 相关阅读:
    pycharm中快捷键的使用
    Python中用format函数格式化字符串的用法
    Python eval()函数的用法
    python中的字符数字之间的转换函数
    python_控制台输出带颜色的文字方法
    Alpha通道是什么意思,和rgb通道有什么区别
    转载-【深度学习】深入理解Batch Normalization批标准化
    深度卷积网络-Inception系列
    微调Inception V3网络-对Satellite分类
    h5模型文件转换成pb模型文件
  • 原文地址:https://www.cnblogs.com/ywb123/p/11206475.html
Copyright © 2011-2022 走看看