mysql8.0使用MHA实现高可用

一、简介

        MHA(Master HA)是一款开源的 MySQL 的高可用程序,它为 MySQL 主从复制架构提供了 automating master failover 功能。MHA 在监控到 master 节点故障时,会提升其中拥有最新数据的 slave 节点成为新的master 节点,在此期间,MHA 会通过于其它从节点获取额外信息来避免一致性方面的问题。MHA 还提供了 master 节点的在线切换功能,即按需切换 master/slave 节点。   

        MHA 是由日本人 yoshinorim(原就职于DeNA现就职于FaceBook)开发的比较成熟的 MySQL 高可用方案。MHA 能够在30秒内实现故障切换,并能在故障切换中,最大可能的保证数据一致性。目前淘宝也正在开发相似产品 TMHA, 目前已支持一主一从。

二、实验过程 

3.1 准备实验 Mysql 的 Replication 环境

3.1.1 下载实验机器镜像(均为centos 7.x)

 (1)在镜像站下载 centos 7.x  阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com) 

下载链接如下:https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2207-02.iso

下载成功!

(2)安装教程:CentOS7(Linux)详细安装教程(手把手图文详解版)-CSDN博客

解决centos-7ifconfig没有IP地址_centos7 ifconfig没有ip地址-CSDN博客

4.1 CentOS7系统安装后的基本配置_bytes of data-CSDN博客

Centos7下bash命令自动补全功能安装_centos7 bash-completion-CSDN博客

(3)安装MySQL,推荐使用在线安装方式

[root@manager ~]# ll
total 16
-rw-------. 1 root root  1452 Feb  9 04:26 anaconda-ks.cfg
-rw-r--r--  1 root root 11700 Feb  9 05:50 mysql84-community-release-el7-1.noarch.rpm
[root@manager ~]#
[root@manager ~]# yum install -y mysql84-community-release-el7-1.noarch.rpm
[root@manager ~]# yum list | grep -i ^mysql
mysql-community-server.x86_64            8.0.41-1.el7                  mysql80-community
[root@manager ~]# yum install -y mysql-community-server

       安装完成!

3.1.2 相关配置

        MHA 对 MYSQL 复制环境有特殊要求,例如各节点都要开启二进制日志及中继日志,各从节点必须显示启用其read-only属性,并关闭relay_log_purge功能等,这里对配置做事先说明。

        本实验环境共有四个节点, 其角色分配如下(实验机器均为centos 7.x)

机器名称IP配置服务角色备注
manager192.168.46.10manager控制器用于监控管理
master192.168.46.11数据库主服务器开启bin-log relay-log 关闭relay_log
slave1192.168.46.12数据库从服务器开启bin-log relay-log 关闭relay_log
slave2192.168.46.13数据库从服务器开启bin-log relay-log 关闭relay_log
        为了方便我们后期的操作,我们在各节点的/etc/hosts文件配置内容中添加如下内容:      
192.168.46.144 node1.kongd.com node1
192.168.46.145 node2.kongd.com node2
192.168.46.146 node3.kongd.com node3
192.168.46.147 node4.kongd.com node4

3.1.3 初始主节点 master 的配置 --- 配置“一主”两从

[root@master ~]# vim /etc/my.cnf
#添加
[mysql]
prompt = (\\u@\\h) [\d] >\\
no_auto_rehash

server_id = 1                    //复制集群中的各节点的id均必须唯一
skip_name_resolve                //关闭名称解析(非必须)
gtid-mode = on                    //启用gtid类型
enforce-gtid-consistency = true //强制GTID的一致性
log-slave-updates = 1            //slave更新是否记入日志
log-bin = mysql-bin                //开启二进制日志
relay-log = relay-log            //开启中继日志

#重启
[root@master ~]# systemctl restart mysql.server

3.1.4 所有 slave 节点依赖的配置 --- 配置一主“两从”

[root@master ~]# vim /etc/my.cnf
#添加
[mysql]
prompt = (\\u@\\h) [\d] >\\
no_auto_rehash

server_id = 1                    //复制集群中的各节点的id均必须唯一
skip_name_resolve                //关闭名称解析(非必须)
gtid-mode = on                    //启用gtid类型
enforce-gtid-consistency = true //强制GTID的一致性
log-slave-updates = 1            //slave更新是否记入日志
log-bin = mysql-bin                //开启二进制日志
relay-log = relay-log            //开启中继日志
relay_log_purge = 0					//是否自动清空不再需要中继日志

#重启
[root@master ~]# systemctl restart mysql.server

3.1.5 配置一主多从复制架构

(1)master与slave 进入MySQL(但是下载的MySQL含有初始密码,所以先修改密码,再进入MySQL界面)

  修改密码如下:

  方法一:

# 查看初始密码
[root@master ~]# grep -i password /var/log/mysqld.log
2025-02-08T14:27:03.203105Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: kgeiZ9)zCs92

# 修改初始密码
[root@master ~]# mysqladmin -uroot -p'kgeiZ9)zCs92' password 'MySQL@123'
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
[root@master ~]#

   方法二:使用变量提取出初始密码即可

[root@slave-1 ~]# tmp_pwd=`awk '/temporary password/ {print $NF}'   /var/log/mysqld.log`
[root@slave-1 ~]# echo $tmp_pwd
Uj1cFtt#jr6;
[root@slave-1 ~]# mysqladmin -uroot -p"$tmp_pwd" password 'MySQL@123'
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
[root@slave-1 ~]#

   为实现进入MySQL不用每次输入密码,则进行以下配置,记录用户名及密码:

[root@master ~]# vim /etc/my.cnf
# 添加
[client]
user = root
password = MySQL@123

# 登录进行验证
[root@master ~]# mysql

(2)配置主从同步

   master 机:

(root@localhost) [(none)] >create user slave@'192.168.46.%' identified with mysql_native_password  by 'MySQL@123'
    -> ;
Query OK, 0 rows affected (0.01 sec)

(root@localhost) [(none)] >grant all on *.* to slave@'192.168.46.%';
Query OK, 0 rows affected (0.00 sec)

(root@localhost) [(none)] >show master status;
+------------------+----------+--------------+------------------+------------------------------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set                        |
+------------------+----------+--------------+------------------+------------------------------------------+
| mysql-bin.000002 |     1018 |              |                  | bd809305-e6ef-11ef-81ab-000c294ed7bd:1-3 |
+------------------+----------+--------------+------------------+------------------------------------------+
1 row in set (0.00 sec)


(root@localhost) [(none)] >

slave1、2 机:

(root@localhost) [(none)] >change master to
    -> master_user='slave',
    -> master_password='MySQL@123',
    -> master_host='192.168.46.11',
    -> master_auto_position=1;
Query OK, 0 rows affected, 7 warnings (0.01 sec)

(root@localhost) [(none)] >

(root@localhost) [(none)] >start slave;
Query OK, 0 rows affected, 1 warning (0.14 sec)

(root@localhost) [(none)] >show slave status \G;

主从同步配置完成!

3.2 安装配置MHA

3.2.1 在 master 上进行授权

(root@localhost) [(none)] >create user 'mhaadmin'@'192.168.46.%' identified with mysql_native_password by 'Mha@1234';
Query OK, 0 rows affected (0.01 sec)

(root@localhost) [(none)] >grant all on *.* to 'mhaadmin'@'192.168.46.%';
Query OK, 0 rows affected (0.01 sec)

3.2.2 准备 ssh 互通环境

MHA集群中的各节点彼此之间均需要基于ssh互信通信,以实现远程控制及数据管理功能。

[root@all ~]# ssh-keygen -f ~/.ssh/id_rsa -P '' -q
[root@all ~]# ssh-copy-id node1

所有节点都生成密钥对,然后拷贝到管理节点,最后管理节点的authorized_keys分发到其他节点。

[root@manager ~]# cd ~/.ssh/
[root@manager .ssh]# ls
authorized_keys  id_rsa  id_rsa.pub  known_hosts
[root@manager .ssh]# cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCubj4tkJ/U2WjbFqeK3b7v2nqYt2rsi/YO2CGaP4T46ZZ2                                                                                        Et+BcSCixjb8ucAoxnnjfpzRLVW9g0bbdRkk/nR3uYxPSWNEerW65ZeobUcsK54A3fwbrwZCBWuCXU75d05d                                                                                        yVpRomz3W4UAsedMNOJmByfxF+fb57EDcZMUfBy75QcpwxVUUropQY9UrgGN6x3/IjMm5MYwMu7XxWK/9IN6                                                                                        y7rFlA70PmdzPAAVBYsPc7ZTHx1ahruag1SeEEPy5OcBDorQZLVU0oG+Y+/TlqqzWEQU9ekFTGgyoclS4MW+                                                                                        D8ileRNC/+1iAx+cQP50yWJ1tXWfVqjMt+3bkjhFsNLl root@slave2
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8qeD55Fb1FLPts2qrTttpU8ZHp15kmPjH1m6UAf8GH6kH                                                                                        nCJbA043VKZ39luhzP743230pTgLRNDuavdrJB29HnTq01D64+SttBJJqg+C3/QMvWXveutrwaik9/4bYflY                                                                                        CbonFuaDzAWtLucmWFojd+8+z+Wi2zC44eKFXFgw4o6GUYel3edJlQ0FCj/QNplxkaLKDYVSfvugLRlteH6z                                                                                        G3XlAtI4ExCOTv378oPU6TQJoKBPXiT4IbRLzTP+WlwHlRz6t3pid06lG2y2HvGoBuy4pAcQHCDgjCltOzl+                                                                                        /yoTQx5WRuKmPHXkCSJj/xSk7+AaLjHrfdNpwjDK4Yqf root@slave1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9rcYOb1WkC2YpsrWh7nrnq+SxRJFqxfOE+5dwSiK+WQPo                                                                                        eEhWK/qoWLgFv8sgLPnlTTmgdxJDXuJMI2EspA4HewsnE4LFals+d7Na5PoRJ7SMusANs8xqeJfGMjeYTBXi                                                                                        PzdB2dF+PsBJC9BmDzDeJi/mA9yr+0r/drZeAt65nim86oZabVXM8yZtoA4hDe4iKNi+edh6RsXbTTYf1Jxd                                                                                        9+tcYRSXB9gc93R1G1UcuX81aNBtB070PDJNvsYyxoN0V8/nqk/7eGn3QkG4W8aYFkM5FqjvbRAyDf0cwM/e                                                                                        WIDrA2L35QkyQrRGtZ9Vo3rSx4h/InZujEhtAMGxBzh7 root@manager
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCuZjZZ3Lzg+qQ3XZZbRv7oZFRudt+TehTjTkFRrDkD/WqD                                                                                        csUPIELF+Hfst+AwReuVPvatlUgvOjvBloRla68wGlZP/UOJgcqxIiKZJCzzz/qVChHWRpVWKUbyfJuCp5Yi                                                                                        K/oPo/t2uG1sIROmZneIOOuZHk5agCdQjgjb20Du+Yga03CMKTHIXY6G11NAVjeHNU5ppgeQu23KuuWtms2B                                                                                        2BAnmZf1FUExwLNmkjGC3BkMWEuWtoR8fwINgGrENcT1VIIynv5TnUgpB6qlAqSZjBNXmxRCCGsCQ9nm5yyg                                                                                        LrUm9Q9dXc/yqEUrBaaTa4rZz0ns1wrFL+Z1Wk4AMw53 root@master
[root@manager .ssh]#


[root@manager ~]# scp ~/.ssh/authorized_keys master:~/.ssh/
root@master's password:
authorized_keys                                                                                                                           100% 1573     1.1MB/s   00:00
[root@manager ~]# scp ~/.ssh/authorized_keys slave1:~/.ssh/
root@slave1's password:
authorized_keys                                                                                                                           100% 1573     1.7MB/s   00:00
[root@manager ~]# scp ~/.ssh/authorized_keys slave2:~/.ssh/
root@slave2's password:
authorized_keys                                                                                                                           100% 1573   955.5KB/s   00:00
[root@manager ~]#


验证:所有节点验证
[root@slave1 .ssh]# for i in manager master slave1 slave2;do ssh $i hostname;done
manager
master
slave1
slave2
[root@slave1 .ssh]#

3.2.3 安装 MHA 包

安装包下载地址:

mha官网:https://code.google.com/archive/p/mysql-master-ha/

github下载地址:

https://github.com/yoshinorim/mha4mysql-manager/releases/tag/v0.58
https://github.com/yoshinorim/mha4mysql-node/releases/tag/v0.58

在本步骤中, Manager节点需要另外多安装一个包。具体需要安装的内容如下:

MHA Manager服务器需要安装manager和node

MHA的Node依赖于perl-DBD-MySQL,所以配置epel源。

manager,master,slave1,slave2配置
[root@node1 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

配置完成后,安装即可:

manager:

[root@manager ~]# ll
total 132
-rw-------. 1 root root  1452 Feb  9 04:26 anaconda-ks.cfg
-rw-r--r--  1 root root 81024 Feb 10 19:19 mha4mysql-manager-0.58-0.el7.centos.noarch.rpm
-rw-r--r--  1 root root 36328 Feb 10 19:19 mha4mysql-node-0.58-0.el7.centos.noarch.rpm
-rw-r--r--  1 root root 11700 Feb 10 04:48 mysql84-community-release-el7-1.noarch.rpm
[root@manager ~]# yum install -y mha4mysql-manager-0.58-0.el7.centos.noarch.rpm mha4mysql-node-0.58-0.el7.centos.noarch.rpm

master、slave1、slave2:

[root@slave2 ~]# yum install -y mha4mysql-node-0.58-0.el7.centos.noarch.rpm

 MHA安装完毕!

3.2.4 定义 MHA 管理配置文件

为MHA专门创建一个管理用户, 方便以后使用, 在mysql的主节点上, 三个节点自动同步:

[root@manager ~]# mkdir /etc/mha
[root@manager ~]# mkdir -p /var/log/mha/app1
[root@manager ~]# vim /etc/mha/app1.cnf
[root@manager ~]#
[root@manager ~]# cat -v /etc/mha/app1.cnf
[server default]
uer=mhaadmin
password=Mha@1234
manager_workdir=/var/log/mha/app1
manager_log=/var/log/mha/app1/manager.log
ssh_user=root
repl_user=slave
repl_password=MySQL@123
ping_interval=1
[server1]
hostname=192.168.46.11
ssh_port=22
candidate_master=1
[server2]
hostname=192.168.46.12
ssh_port=22
candidate_master=1
[server3]
hostname=192.168.46.13
ssh_port=22
candidate_master=1
[root@manager ~]# ^C

3.2.5 对四个节点进行检测

1)检测各节点间 ssh 互信通信配置是否 ok   

        我们在 Manager 机器上输入下述命令来检测:

[root@manager ~]# masterha_check_ssh --conf=/etc/mha/app1.cnf
Mon Feb 10 19:48:25 2025 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Mon Feb 10 19:48:25 2025 - [info] Reading application default configuration from /etc/mha/app1.cnf..
Mon Feb 10 19:48:25 2025 - [info] Reading server configuration from /etc/mha/app1.cnf..
Mon Feb 10 19:48:25 2025 - [info] Starting SSH connection tests..
Mon Feb 10 19:48:26 2025 - [debug]
Mon Feb 10 19:48:25 2025 - [debug]  Connecting via SSH from root@192.168.46.11(192.168.46.11:22) to root@192.168.46.12(192.168.46.12:22)..
Mon Feb 10 19:48:25 2025 - [debug]   ok.
Mon Feb 10 19:48:25 2025 - [debug]  Connecting via SSH from root@192.168.46.11(192.168.46.11:22) to root@192.168.46.13(192.168.46.13:22)..
Mon Feb 10 19:48:26 2025 - [debug]   ok.
Mon Feb 10 19:48:26 2025 - [debug]
Mon Feb 10 19:48:26 2025 - [debug]  Connecting via SSH from root@192.168.46.12(192.168.46.12:22) to root@192.168.46.11(192.168.46.11:22)..
Mon Feb 10 19:48:26 2025 - [debug]   ok.
Mon Feb 10 19:48:26 2025 - [debug]  Connecting via SSH from root@192.168.46.12(192.168.46.12:22) to root@192.168.46.13(192.168.46.13:22)..
Mon Feb 10 19:48:26 2025 - [debug]   ok.
Mon Feb 10 19:48:28 2025 - [debug]
Mon Feb 10 19:48:26 2025 - [debug]  Connecting via SSH from root@192.168.46.13(192.168.46.13:22) to root@192.168.46.11(192.168.46.11:22)..
Mon Feb 10 19:48:26 2025 - [debug]   ok.
Mon Feb 10 19:48:26 2025 - [debug]  Connecting via SSH from root@192.168.46.13(192.168.46.13:22) to root@192.168.46.12(192.168.46.12:22)..
Mon Feb 10 19:48:27 2025 - [debug]   ok.
Mon Feb 10 19:48:28 2025 - [info] All SSH connection tests passed successfully.
[root@manager ~]#

2)检查管理的MySQL复制集群的连接配置参数是否OK

[root@manager ~]# masterha_check_repl --conf=/etc/mha/app1.cnf

3.3 启动 MHA

  1. 在 manager 节点上启动 MHA:

[root@manager ~]# 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 &
[1] 2699

2. 查看 master 节点的状态

[root@manager ~]# masterha_check_status --conf=/etc/mha/app1.cnf
app1 (pid:2699) is running(0:PING_OK), master:192.168.46.11

3. 开发启动服务脚本

[root@manager ~]# vim /etc/init.d/masterha_managerd
#!/bin/bash
# chkconfig: 35 80 20
# description: MHA management script.

STARTEXEC="/usr/bin/masterha_manager --conf"
STOPEXEC="/usr/bin/masterha_stop --conf"
CONF="/etc/mha/app1.cnf"
process_count=`ps -ef |grep -w masterha_manager|grep -v grep|wc -l`
PARAMS="--ignore_last_failover"

case "$1" in
  start)
      if [ $process_count -gt 1 ]
      then
              echo "masterha_manager exists, process is already running"
      else
              echo "Starting Masterha Manager"
              $STARTEXEC $CONF $PARAMS < /dev/null > /var/log/mha/app1/manager.log 2>&1 &
      fi
      ;;
  stop)
      if [ $process_count -eq 0 ]
      then
              echo "Masterha Manager does not exist, process is not running"
      else
              echo "Stopping ..."
              $STOPEXEC $CONF
              while(true)
              do
                  process_count=`ps -ef |grep -w masterha_manager|grep -v grep|wc -l`
                  if [ $process_count -gt 0 ]
                      then
                           sleep 1
                      else
                           break
                  fi
              done
              echo "Master Manager stopped"
      fi
      ;;
  *)
      echo "Please use start or stop as first argument"
      ;;
esac
[root@manager ~]# chmod +x /etc/init.d/masterha_managerd
[root@manager ~]# chkconfig --add masterha_managerd
[root@manager ~]# chkconfig masterha_managerd on

4. 测试服务脚本

由于之前用命令开启服务,则先进行停止该进程

[root@manager ~]# ps -ef | grep masterha
root       2699   2290  0 19:50 pts/0    00:00:00 perl /usr/bin/masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover
root       3138   2290  0 19:57 pts/0    00:00:00 grep --color=auto masterha
[root@manager ~]# kill 2699
[root@manager ~]# ps -ef | grep masterha
root       3161   2290  0 19:57 pts/0    00:00:00 grep --color=auto masterha
[1]+  Exit 1                  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
[root@manager ~]# ps -ef | grep masterha
root       3163   2290  0 19:57 pts/0    00:00:00 grep --color=auto masterha
[root@manager ~]#

进程停止完成,开始进行服务脚本测试:

[root@manager ~]# systemctl start masterha_managerd
[root@manager ~]# systemctl status masterha_managerd
[root@manager ~]# ps -ef | grep -w masterha_manager
[root@manager ~]# systemctl stop masterha_managerd
[root@manager ~]# ps -ef | grep -w masterha_manager

3.4 配置VIP

1. 编写脚本

[root@node1 ~]# vim /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 = '172.16.90.210/24';
my $key = '1';
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 {

    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";
}

[root@node1 ~]# chmod +x /usr/local/bin/master_ip_failover 

2、更改manager配置文件

[root@node1 ~]# vim /etc/mha/app1.cnf 
[server default]
添加:
master_ip_failover_script=/usr/local/bin/master_ip_failover

3、主库上,手工生成第一个vip地址

[root@master ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:4e:d7:bd brd ff:ff:ff:ff:ff:ff
    inet 192.168.46.11/24 brd 192.168.46.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::22df:a835:ba99:ba96/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
[root@master ~]# ifconfig ens33:1 192.168.46.15/24
[root@master ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:4e:d7:bd brd ff:ff:ff:ff:ff:ff
    inet 192.168.46.11/24 brd 192.168.46.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.46.15/24 brd 192.168.46.255 scope global secondary ens33:1
       valid_lft forever preferred_lft forever
    inet6 fe80::22df:a835:ba99:ba96/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
[root@master ~]#

4、重启MHA

[root@manager ~]# systemctl restart masterha_managerd

3.5 测试 MHA 故障转移

3.5.1 在 master 节点关闭 mysql 服务,模拟主节点数据崩溃

[root@master ~]#  systemctl stop mysqld.service

3.5.2 在 manger 节点查看日志

[root@manager ~]# tail -1 /var/log/mha/app1/manager.log
Master failover to 192.168.46.12(192.168.46.12:3306) completed successfully.
[root@manager ~]#

3.5.3 检查VIP

[root@slave1 ~]# ifconfig -a |grep -A 2 "ens33"
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.46.12  netmask 255.255.255.0  broadcast 192.168.46.255
        inet6 fe80::22df:a835:ba99:ba96  prefixlen 64  scopeid 0x20<link>
[root@slave1 ~]#

 试验结束!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值