MySQL高可用

目录

MySQL高可用方案

1、MHA架构(单主)

MHA的工作原理

MHA 架构的优点

MHA 架构的缺点

2、MHA架构的部署

1)关闭防火墙和selinux

2)分别修改master和slave1,slave2的主机名

3)修改master主库服务器的配置文件

4)修改slave从库服务器的配置(slave1,slave2)

5)在 Master、Slave1、Slave2 节点上都创建两个软链接

6)进入master的mysql,给slave节点和manage授权

7)在master节点查看二进制文件和同步位置点

8)在slave1和slave2上执行同步操作,并查看数据同步状态

9)两个从库必须设置为只读模式

10)在主库中创建库创建表,插入数据,从库测试数据同步

11)在所有服务器上安装MHA的依赖环境

12)在所有服务器上安装MHA的node组件

13)在manage服务器上安装manage组件

14)在manage服务器上配置到其他数据库的ssh免密登录

15)master,slave1和slave2之间,也要互相配置ssh免密登录

16)在manage服务器上配置MHA

17)创建 MHA 软件目录并拷贝配置文件

18)第一次配置需要在 Master 节点上手动开启虚拟IP

19)在 manager 节点上测试 ssh 无密码认证

20)在 manager 节点上测试 mysql 主从连接情况

21)启动MHA

22)查看MHA状态,查看日志

23)模拟故障发生

24)关闭 manager 服务的命令

3、MMM架构(双主)

MMM 的工作原理

MMM架构的优点

MMM架构的缺点

4、MMM架构部署

1)首先关闭防火墙和selinux,并安装依赖环境(所有服务器)

2)修改master01的配置文件

3)讲配置文件复制给其他3台mysql数据库服务器

4)其他三台MySQL服务器修改配置文件中的server-id,然后重启mysql服务

5)配置主主复制

6)在从服务器上配置主从复制

7)在master01上创建库创建表,插入数据,master02,slave01,slave02测试同步情况

8)在master01上对mmm进行配置

9)修改所有数据库服务器的代理配置文件 mmm_agent.conf

10)修改monitor监控服务器上的监控配置文件 mmm_mon.conf

11)在所有数据库上为 mmm_agent(代理进程)和 mmm_moniter(监控进程)授权

12)所有服务器开启mysql-mmm-agent

13)在 monitor 服务器上启动 mysql-mmm-monitor

14)在monitor 服务器上测试群集

15)故障测试

16)客户端测试

17)slave01和slave02上都可以查看验证


MySQL高可用方案

mysql高可用的九方案,MAH架构、MMM架构、MGR架构、Mysql  cluster(多主)、Galera  Cluster(多主)、PXC架构(多主)、RAID10(数据可靠性方案)、SAN存储网络、DRBD方案。

本篇文章主要讲述MHA架构MMM架构

1、MHA架构(单主)

MySQL高可用_第1张图片

MySQL MHA(Master High Availability)是一种用于 MySQL 数据库的高可用性架构。它的设计目标是确保在主数据库发生故障时,能够快速自动地将备库(Slave)提升为新的主库,以保证系统的连续性和可用性。

MHA的工作原理

        1. MHA 通过manage监控 MySQL master主节点的状态来实现故障检测和自动故障转移。

        2. 当master主节点发生故障时,MHA 会自动将其中一个拥有最新数据的slave从节点提升                   为新的master主节点。

        3. 使其他的slave从节点与新master节点做主从复制操作,确保数据库的可用性。

MHA 架构的优点

  1. 自动故障切换:MHA 能够自动检测主库的故障,并快速将备库提升为新的主库,减少了手动干预的需要,提高了系统的可用性。

  2. 实时监测:MHA 通过与 Master 节点和 Slave 节点建立 SSH 连接,实时监测它们的状态,能够及时发现故障并采取相应的措施。

  3. 简化配置:MHA 提供了简单易用的配置文件,可以轻松地配置主库和备库的信息,减少了配置的复杂性。

  4. 高可扩展性:MHA 支持多个备库,可以根据需求灵活地扩展系统的容量和性能。

MHA 架构的缺点

  1. 配置复杂性:尽管 MHA 提供了简化的配置文件,但对于不熟悉 MHA 的用户来说,配置仍然可能是一项复杂的任务。特别是在涉及多个主库和备库的复杂环境中,配置可能变得更加困难。

  2. 依赖 SSH 连接:MHA 使用 SSH 连接与主库和备库进行通信和监控。这意味着在配置和使用 MHA 时,必须确保 SSH 连接的可用性和稳定性。如果 SSH 连接出现问题,可能会导致 MHA 无法正常工作。

  3. 故障切换过程中的数据同步延迟:在故障切换期间,MHA 需要将备库提升为新的主库,并重新配置其他备库作为新的从库。这个过程可能需要一些时间,导致在切换期间存在一定的数据同步延迟。这可能会对某些应用程序的数据一致性产生影响。

  4. 依赖 MySQL 复制功能:MHA 依赖 MySQL 的复制功能来实现数据的同步和复制。如果 MySQL 的复制功能出现问题,可能会导致 MHA 无法正常工作或数据同步不完整。

  5. 需要额外的硬件资源:为了实现高可用性,MHA 需要至少一个备库来作为冗余备份。这意味着需要额外的硬件资源来支持备库的运行和数据复制,增加了系统的成本和复杂性。

2、MHA架构的部署

环境:

master:192.168.3.10                #提前导入mha4mysql-node-0.57.tar.gz

slave1:192.168.3.11                #提前导入mha4mysql-node-0.57.tar.gz

slave2:192.168.3.12                #提前导入mha4mysql-node-0.57.tar.gz

manage:192.168.3.106                #提前导入mha4mysql-node-0.57.tar.gz和mha4mysql-manager-0.57.tar.gz

1)关闭防火墙和selinux

systemctl   stop   firewalld.service

setenforce  0

2)分别修改master和slave1,slave2的主机名

master:#修改master的主机名

hostnamectl set-hostname mysql-1

slave1:#修改slave1的主机名
hostnamectl set-hostname mysql-2

salve2:#修改slave2的主机名
hostnamectl set-hostname mysql-3

3)修改master主库服务器的配置文件

vim /etc/my.cnf
[mysqld]
server-id = 1
log_bin = mysql-bin                #开启二进制日志
binlog_format = mixed           #设置二进制日志类型
log-slave-updates = true        #允许slave从master复制数据时可以写入到自己的二进制日志
relay-log = relay-log-bin        #开启中继日志
relay-log-index = slave-relay-bin.index        #中继日志索引

systemctl restart mysqld        #重启mysql服务

MySQL高可用_第2张图片

4)修改slave从库服务器的配置(slave1,slave2)

vim /etc/my.cnf
server-id = 2                         #三台服务器的 server-id 不能一样
log_bin = mysql-bin
binlog_format = mixed
log-slave-updates = true
relay-log = relay-log-bin
relay-log-index = slave-relay-bin.index

systemctl restart mysqld

MySQL高可用_第3张图片MySQL高可用_第4张图片

5)在 Master、Slave1、Slave2 节点上都创建两个软链接

ln -s /usr/local/mysql/bin/mysql /usr/sbin/
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/

6)进入master的mysql,给slave节点和manage授权

mysql -uroot -p

#给slave节点授权
grant replication slave on *.* to 'myslave'@'192.168.3.%' identified by '123123';

#给manage授权

grant all privileges on *.* to 'mha'@'192.168.3.%' identified by 'abc123';


#防止从库通过主机名连接主库(master,salve1,salve2上均设置)

grant all privileges on *.* to 'mha'@'mysql1' identified by 'abc123';

grant all privileges on *.* to 'mha'@'mysql2' identified by 'abc123';
grant all privileges on *.* to 'mha'@'mysql3' identified by 'abc123';

flush privileges;        #使授权立即生效

MySQL高可用_第5张图片MySQL高可用_第6张图片MySQL高可用_第7张图片

7)在master节点查看二进制文件和同步位置点

master:

show master status;

MySQL高可用_第8张图片

8)在slave1和slave2上执行同步操作,并查看数据同步状态

change master to master_host='192.168.3.10',master_user='myslave',master_password='123123',

master_log_file='mysql-bin.000001',master_log_pos=1743; 

start slave;

show slave status\G    

MySQL高可用_第9张图片MySQL高可用_第10张图片

9)两个从库必须设置为只读模式

set global read_only=1;

MySQL高可用_第11张图片MySQL高可用_第12张图片

10)在主库中创建库创建表,插入数据,从库测试数据同步

master:

show databases;

create database test;

use test;

create table t1(id int, name varchar(10), age int,primary key(id));

desc t1;

insert into t1 values(1,'张三',18),(2,'李四',19),(3,'王五',20);
select * from t1;


slave1,slave2:

show databases;

select * from test.t1;

MySQL高可用_第13张图片MySQL高可用_第14张图片

11)在所有服务器上安装MHA的依赖环境

yum install epel-release --nogpgcheck -y        #首先安装epel源

yum install -y perl-DBD-MySQL \                #其次安装依赖环境
perl-Config-Tiny \
perl-Log-Dispatch \
perl-Parallel-ForkManager \
perl-ExtUtils-CBuilder \
perl-ExtUtils-MakeMaker \
perl-CPAN

12)在所有服务器上安装MHA的node组件

cd /opt
tar zxvf mha4mysql-node-0.57.tar.gz
cd mha4mysql-node-0.57
perl Makefile.PL
make && make install

MySQL高可用_第15张图片

13)在manage服务器上安装manage组件

tar zxvf mha4mysql-manager-0.57.tar.gz
cd mha4mysql-manager-0.57
perl Makefile.PL
make && make install

MySQL高可用_第16张图片

14)在manage服务器上配置到其他数据库的ssh免密登录

ssh-keygen -t rsa                 #一路按回车键
ssh-copy-id 192.168.3.10
ssh-copy-id 192.168.3.11
ssh-copy-id 192.168.3.12

MySQL高可用_第17张图片MySQL高可用_第18张图片

15)master,slave1和slave2之间,也要互相配置ssh免密登录

master:

ssh-keygen -t rsa
ssh-copy-id 192.168.3.11
ssh-copy-id 192.168.3.12

slave1:

ssh-keygen -t rsa
ssh-copy-id 192.168.3.10
ssh-copy-id 192.168.3.12


 

slave2:

ssh-keygen -t rsa
ssh-copy-id 192.168.3.10
ssh-copy-id 192.168.3.11

MySQL高可用_第19张图片

16)在manage服务器上配置MHA

#在 manager 节点上复制相关脚本到/usr/local/bin 目录

cp -rp /opt/mha4mysql-manager-0.57/samples/scripts /usr/local/bin

#复制故障切换脚本

cp /usr/local/bin/scripts/master_ip_failover /usr/local/bin
#修改故障切换脚本

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
);
#############################添加内容部分#########################################
#指定vip的地址
my $vip = '192.168.3.254';
#指定vip的广播地址
my $brdc = '192.168.3.255';
#指定vip绑定的网卡
my $ifdev = 'ens33';    
#指定vip绑定的虚拟网卡序列号
my $key = '1';
#代表此变量值为ifconfig ens33:1 192.168.3.254
my $ssh_start_vip = "/sbin/ifconfig ens33:$key $vip";    
#代表此变量值为ifconfig ens33:1 192.168.3.254 down
my $ssh_stop_vip = "/sbin/ifconfig ens33:$key down";
#指定退出状态码为0
my $exit_code = 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";
}

MySQL高可用_第20张图片

17)创建 MHA 软件目录并拷贝配置文件

#创建相关目录(master,slave1,salve2,manage)

mkdir -p /opt/mysql-mha/mha-node
 

#manager节点

mkdir -p /opt/mysql-mha/mha

#编写配置文件
vim /opt/mysql-mha/mysql_mha.cnf
[server default]
manager_log=/opt/mysql-mha/manager.log
manager_workdir=/opt/mysql-mha/mha
master_binlog_dir=/usr/local/mysql/data
master_ip_failover_script=/usr/local/bin/master_ip_failover
master_ip_online_change_script=/usr/local/bin/master_ip_online_change
user=mha
password=manager
port=3306
ping_interval=1
remote_workdir=/opt/mysql-mha/mha-node
repl_user=myslave
repl_password=123123
secondary_check_script=/usr/local/bin/masterha_secondary_check -s 192.168.3.11 -s 192.168.3.12
shutdown_script=""
ssh_user=root

[server1]
hostname=192.168.3.10
port=3306

[server2]
candidate_master=1
check_repl_delay=0
hostname=192.168.3.11
port=3306

[server3]
hostname=192.168.3.12
port=3306

MySQL高可用_第21张图片

18)第一次配置需要在 Master 节点上手动开启虚拟IP

master:

/sbin/ifconfig ens33:1 192.168.3.254/24

MySQL高可用_第22张图片

19)在 manager 节点上测试 ssh 无密码认证

masterha_check_ssh -conf=/opt/mysql-mha/mysql_mha.cnf

MySQL高可用_第23张图片

20)在 manager 节点上测试 mysql 主从连接情况

masterha_check_repl -conf=/opt/mysql-mha/mysql_mha.cnf

MySQL高可用_第24张图片

21)启动MHA

nohup masterha_manager \
--conf=/opt/mysql-mha/mysql_mha.cnf \
--remove_dead_master_conf \
--ignore_last_failover < /dev/null > /var/log/mha_manager.log 2>&1 &

MySQL高可用_第25张图片

22)查看MHA状态,查看日志

masterha_check_status --conf=/opt/mysql-mha/mysql_mha.cnf    #查看MHA状态
cat /opt/mysql-mha/manager.log | grep "current master"    #查看日志

MySQL高可用_第26张图片

23)模拟故障发生

MHA上:日志监控
tail -f /opt/mysql-mha/manager.log

master上停止mysql服务
systemctl stop mysqld

MySQL高可用_第27张图片

24)关闭 manager 服务的命令

masterha_stop --conf=/opt/mysql-mha/mysql_mha.cnf

或者

直接采用 kill 进程 ID 的方式关闭。

3、MMM架构(双主)

MySQL高可用_第28张图片MySQL 高可用方案之 MMM(Multi-Master Replication Manager)是一种常用的解决方案,用于实现 MySQL 数据库的高可用性和负载均衡。

MMM 基于 MySQL 的复制机制,通过在多个 MySQL 服务器之间进行主从复制,实现了数据的同步和备份。它的主要特点是可以实现多主复制,即多个 MySQL 服务器可以同时作为主节点接收写操作,并将这些写操作同步到其他从节点上。

MMM 的工作原理

  1. MMM 通过监控 MySQL master的状态来实现故障检测和自动故障转移。当一个master主节点发生故障时,MMM 会自动将VIP转到备master节点上,确保数据库的可用性。

  2. MMM 还可以根据负载情况自动进行负载均衡。它可以根据每个节点的负载情况,将读操作分发到不同的节点上,从而提高系统的整体性能。

  3. MMM 还提供了一些管理工具,可以方便地进行节点的添加、删除和配置修改等操作。

MMM架构的优点

  1. 高可用性:MMM 通过自动故障检测和故障转移机制,可以快速将一个从节点提升为新的主节点,从而实现数据库的高可用性,减少系统的停机时间。

  2. 负载均衡:MMM 可以根据节点的负载情况,将读操作分发到不同的节点上,从而实现负载均衡,提高系统的整体性能。

  3. 简单易用:MMM 提供了一些管理工具,可以方便地进行节点的添加、删除和配置修改等操作,使得系统的管理和维护变得简单易用。

MMM架构的缺点

  1. 数据一致性:由于 MMM 采用的是异步复制机制,主节点和从节点之间存在一定的延迟,可能导致数据的不一致。在某些场景下,可能需要额外的措施来确保数据的一致性。

  2. 配置复杂性:MMM 的配置相对复杂,需要对 MySQL 的复制机制和 MMM 的工作原理有一定的了解。在配置过程中,需要注意各个节点的配置一致性和正确性。

4、MMM架构部署

环境:

master01(db1):192.168.3.10                 # 提前导入 mysql5.7、mysql-mmm
master02(db2):192.168.3.11                 # 提前导入mysql5.7、mysql-mmm
slave01(db3):192.168.3.12                   # 提前导入 mysql5.7、mysql-mmm
slave02(db4):192.168.3.13                   # 提前导入 mysql5.7、mysql-mmm
monitor  :192.168.80.106                           # 提前导入mysql-mmm

1)首先关闭防火墙和selinux,并安装依赖环境(所有服务器)

systemctl stop firewalld.service

setenforce 0

#下载aliyun的repo源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install epel-release        #安装epel源
yum -y install mysql-mmm*        #安装mmm

2)修改master01的配置文件

vim /etc/my.cnf

......
[mysqld]

......

server-id = 1                                               #每台 Mysql 主机的 server-id 不能相同
log-error=/usr/local/mysql/data/mysql_error.log             #错误日志
general_log=ON                                              #通用查询日志
general_log_file=/usr/local/mysql/data/mysql_general.log
slow_query_log=ON                                           #慢查询日志
slow_query_log_file=mysql_slow_query.log
long_query_time=5
binlog-ignore-db=mysql,information_schema        #不需要同步的库名
log_bin=mysql_bin                                #开启二进制日志用于主从数据复制
log_slave_updates=true                           #允许slave从master复制数据时可以写入到自己的二进制日志
sync_binlog=1                            #"双1设置",MySQL 在每写一次二进制日志时都会同步到磁盘中去    
innodb_flush_log_at_trx_commit=1         #"双1设置",每次事务提交时MySQL都会把缓存的数据写入日志文件,并且刷到磁盘中去
auto_increment_increment=2               #自增字段一次递增多少
auto_increment_offset=1  

MySQL高可用_第29张图片

3)讲配置文件复制给其他3台mysql数据库服务器

scp /etc/my.cnf [email protected]:/etc/
scp /etc/my.cnf [email protected]:/etc/
scp /etc/my.cnf [email protected]:/etc/

MySQL高可用_第30张图片

4)其他三台MySQL服务器修改配置文件中的server-id,然后重启mysql服务

master02:

vim /etc/my.cnf

server-id = 2

systemctl restart mysqld.service

slave01:

vim /etc/my.cnf

server-id = 3

systemctl restart mysqld.servicel

slave02:

vim /etc/my.cnf

server-id = 4

systemctl restart mysqld.service

MySQL高可用_第31张图片

5)配置主主复制

#在master01和master02服务器上为彼此授权

grant replication slave on *.* to 'replication'@'192.168.3.%' identified by '123123';

show master status;        #在master01和master02服务器上查看日志文件名称和同步点


master01:

change master to master_host='192.168.3.11',master_user='replication',master_password='123123',master_log_file='mysql_bin.000001',master_log_pos=459;

start slave;

show slave status\G

master02:

change master to master_host='192.168.3.10',master_user='replication',master_password='123123',master_log_file='mysql_bin.000001',master_log_pos=459;

start slave;

show slave status\G

MySQL高可用_第32张图片MySQL高可用_第33张图片

6)在从服务器上配置主从复制

change master to master_host='192.168.3.10',master_user='replication',master_password='123123',master_log_file='mysql_bin.000001',master_log_pos=459;

start slave;

show slave status\G

MySQL高可用_第34张图片MySQL高可用_第35张图片

7)在master01上创建库创建表,插入数据,master02,slave01,slave02测试同步情况

master01:

master:

show databases;

create database test;

use test;

create table t1(id int, name varchar(10), age int,primary key(id));

desc t1;

insert into t1 values(1,'张三',18),(2,'李四',19),(3,'王五',20);
select * from t1;


master02,slave01,slave02:

show databases;

select * from test.t1;

MySQL高可用_第36张图片MySQL高可用_第37张图片MySQL高可用_第38张图片

MySQL高可用_第39张图片

8)在master01上对mmm进行配置

cd /etc/mysql-mmm/

vim mmm_common.conf
……

    cluster_interface       ens33
    ……
    replication_user        replication
    replication_password    123123
    agent_user              mmm_agent
    agent_password          123123


    ip      192.168.3.10
    mode    master
    peer    db2


    ip      192.168.3.11
    mode    master
    peer    db1


    ip      192.168.3.12
    mode    slave


    ip      192.168.3.13
    mode    slave


    hosts   db1, db2
    ips     192.168.3.254
    mode    exclusive           #只有一个 host 可以进行写操作模式


    hosts   db3, db4
    ips     192.168.3.154, 192.168.3.155
    mode    balanced            #多个 slave 主机可以进行读操作模式

MySQL高可用_第40张图片

9)修改所有数据库服务器的代理配置文件 mmm_agent.conf

vim /etc/mysql-mmm/mmm_agent.conf

this db1                #根据不同的主机分别修改为 db1,db2,db3,db4

MySQL高可用_第41张图片MySQL高可用_第42张图片MySQL高可用_第43张图片MySQL高可用_第44张图片

10)修改monitor监控服务器上的监控配置文件 mmm_mon.conf

vim /etc/mysql-mmm/mmm_mon.conf

include mmm_common.conf

.....
    ping_ips            192.168.3.10,192.168.3.11,192.168.3.12,192.168.3.13    #指定所有数据库服务器的 IP
    auto_set_online        10                #指定自动上线时间


    monitor_user        mmm_monitor        #指定 mmm_monitor 的用户名
    monitor_password    123123          #指定 mmm_monitor 的密码

11)在所有数据库上为 mmm_agent(代理进程)和 mmm_moniter(监控进程)授权

#为 mmm_agent(代理进程)授权(所有MySQL服务器上)

grant super, replication client, process on *.* to 'mmm_agent'@'192.168.3.%' identified by '123123';

#为 mmm_moniter(监控进程)授权(所有MySQL服务器上)

grant replication client on *.* to 'mmm_monitor'@'192.168.3.%' identified by '123123';

flush privileges;        #授权立即生效

MySQL高可用_第45张图片

12)所有服务器开启mysql-mmm-agent

systemctl start mysql-mmm-agent.service

13)在 monitor 服务器上启动 mysql-mmm-monitor

systemctl start mysql-mmm-monitor.service

MySQL高可用_第46张图片

14)在monitor 服务器上测试群集

#查看各节点的情况
mmm_control show

MySQL高可用_第47张图片

#检测监控功能是否都完善,需要各种OK
mmm_control checks all

MySQL高可用_第48张图片

#指定绑定 VIP 的主机
mmm_control move_role writer db2

MySQL高可用_第49张图片

15)故障测试

#停止 master02 确认 VIP 是否移动到 master01 上。

注意:master01 主服务器恢复服务后,不会抢占

mater02:

systemctl stop mysqld.service

MySQL高可用_第50张图片

16)客户端测试

#在 master01 服务器上为 monitor 服务器地址授权登录
grant all on *.* to 'abc'@'192.168.3.106' identified by '123123';
flush privileges;

#在 monitor 服务器上使用 VIP 登录
yum install -y mariadb-server mariadb
systemctl start mariadb.service

mysql -uabc -p -h 192.168.3.254

#创建数据,测试同步情况
create database abc;

MySQL高可用_第51张图片MySQL高可用_第52张图片MySQL高可用_第53张图片

17)slave01和slave02上都可以查看验证

show databases;

select * from abc.a1;

MySQL高可用_第54张图片MySQL高可用_第55张图片MySQL高可用_第56张图片

你可能感兴趣的:(mysql,数据库)