MySQL数据库——MHA高可用

目录

前言

一、MHA概述

1、MHA概念

2、MHA的组成

3、MHA的特点

4、MHA工作原理

二、部署MHA高可用

1、部署主从同步

 1.1、修改主配置文件并创建软链接

1.2、配置一主两从机制

1.3、测试主从同步效果

2、部署MHA

2.1、安装 MHA 所有组件

2.2、所有设备配置无密码认证

2.3、 在manager服务器上配置MHA

2.4、在 manager 服务器上启动 MHA

2.5、查看 MHA 状态 

3、模拟单点故障

4、单点故障修复

 4.1、修复master

4.2、 修复主从

4.3、在 manager 上修改配置文件app1.cnf

4.4、在manager上重启MHA

4.5、测试主从复制


前言

一、MHA概述

1、MHA概念

  • MHA(Master High Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件
  • MHA 的出现就是解决MySQL 单点的问题
  • MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作
  • MHA能在故障切换的过程中最大程度上保证数据的一致性,以达到真正意义上的高可用

2、MHA的组成

  • MHA Node(数据节点)

MHA Node 运行在每台 MySQL 服务器上。

  • MHA Manager(管理节点)

MHA Manager 可以单独部署在一台独立的机器上,管理多个 master-slave 集群;也可以部署在一台 slave 节点上。
MHA Manager 会定时探测集群中的 master 节点。当 master 出现故障时,它可以自动将最新数据的 slave 提升为新的 master,然后将所有其他的 slave 重新指向新的 master。整个故障转移过程对应用程序完全透明。

3、MHA的特点

  • 自动故障切换:在主服务器发生故障时,能够自动选择一个最合适的从服务器提升为新的主服务器。

  • 快速恢复:MHA 能够快速地实现主从切换,减少数据库不可用的时间,提高系统的可用性。

  • 最小化数据丢失:通过复制日志和其他机制,MHA 在故障切换过程中尽可能地最小化数据丢失。

  • 灵活的配置:支持多种配置选项,可以根据具体需求进行调整。

  • SSH连接保障安全:MHA 利用 SSH 连接来进行节点间的通信和操作,确保通信的安全性。

  • 监控与报警:提供监控和报警功能,能够实时监测数据库的状态并及时响应故障情况。

  • 易于部署和管理:提供命令行工具和简单的配置文件,使得部署和管理变得简单。

  • 架构支持:目前 MHA 支持一主多从架构,最少需要三台服务器,即一台主服务器和两台从服务器。

4、MHA工作原理

详细过程

  • 监控主节点状态:MHA 通过定期检查主节点的健康状态来监控数据库集群,包括主节点是否正常运行以及主从复制是否同步等。

  • 故障检测:当 MHA 检测到主节点发生故障(如主节点宕机或不可达),会立即采取行动以确保数据库的高可用性。

  • 自动主从切换:一旦确认主节点故障,MHA 会自动执行主从切换操作,选择一个健康的从节点,将其提升为新的主节点,以继续提供数据库服务。

  • 数据同步:在主从切换后,MHA 会确保新的主节点和其他从节点之间的数据同步,协调数据复制过程,确保所有节点都有最新的数据副本。

  • 恢复主节点:一旦原主节点恢复正常,MHA 会协助将其重新加入数据库集群,并根据需要重新配置节点角色,以恢复正常的主从架构。

  • 自动化管理:MHA 通过自动化的流程和决策来管理数据库集群的高可用性,减少人工干预的需求,提高系统的稳定性和可靠性。

简单过程:

  • 从宕机崩溃的master 保存二进制日志事件(binlog  events);
  • 识别含有最新的更新 slave 日志
  • 应用差异的中继日志(relay log)到其他的slave
  • 应用从master保存的二进制日志事件
  • 提升一个 salve 为新的master
  • 使其他的slave连接行的master 进行复制。
     

二、部署MHA高可用

MHA manager 服务器CentOS 7172.16.88.33MHA node、manager 组件
Master 主节点服务器CentOS 7172.16.88.44mysql5.7、MHA node 组件
Slave1 从节点服务器CentOS 7172.16.88.55mysql5.7、MHA node 组件
Slave2 从节点服务器CentOS 7172.16.88.66mysql5.7、MHA node 组件

关闭所有设备的防火墙和核心防护

[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#setenforce 0

修改四台服务器的主机名,方便区分

[root@localhost ~]#hostnamectl set-hostname master
[root@localhost ~]#bash      #修改master服务器主机名
 
[root@localhost ~]#hostnamectl set-hostname slave1
[root@localhost ~]#bash      #修改slave1服务器主机名
 
[root@localhost ~]#hostnamectl set-hostname slaver2
[root@localhost ~]#bash      #修改slave2服务器主机名
 
[root@localhost ~]#hostnamectl set-hostname manager
[root@localhost ~]#bash      #修改MHA-manager服务器主机名

安装master主服务器、slave1从服务器、slave2从服务器的mysql5.7软件 

#master主服务器、slave1从服务器、slave2从服务器都需编译安装的mysql软件
可参考《Mysql数据库——概念与安装》:https://blog.csdn.net/A6985HG/article/details/141601495?spm=1001.2014.3001.5501

1、部署主从同步

 1.1、修改主配置文件并创建软链接

master 修改主配置文件并创建软连接

[root@master ~]#vim /etc/my.cnf
[mysqld]
server-id = 1
#三台服务器 server-id 不能一样
log_bin = master-bin
#添加,主服务器开启二进制日志
log-slave-updates = true
#添加,允许slave从master复制数据时可以写入到自己的二进制日志
[root@master ~]#systemctl restart mysqld
 
[root@master ~]#ln -s /usr/local/mysql/bin/mysql /usr/sbin/
[root@master ~]#ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/
#创建软链接

 slave1 修改主配置文件并创建软连接 

[root@slave1 ~]#vim /etc/my.cnf
vim /etc/my.cnf
server-id = 2 
#三台服务器 server-id 不能一样
log_bin = master-bin
relay-log = relay-log-bin
relay-log-index = slave-relay-bin.index
[root@slave1 ~]#systemctl restart mysqld
 
[root@slave1 ~]#ln -s /usr/local/mysql/bin/mysql /usr/sbin/
[root@slave1 ~]#ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/
#创建软链接

 

slave2 修改主配置文件并创建软连接

[root@slave2 ~]#vim /etc/my.cnf
vim /etc/my.cnf
server-id = 3 
#三台服务器 server-id 不能一样
log_bin = master-bin
relay-log = relay-log-bin
relay-log-index = slave-relay-bin.index
[root@slave2 ~]#systemctl restart mysqld
 
[root@slave2 ~]#ln -s /usr/local/mysql/bin/mysql /usr/sbin/
[root@slave2 ~]#ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/
#创建软链接

 

1.2、配置一主两从机制

master主服务器、slave1从服务器、slave2从服务器都需配置授权操作

#允许从数据库同步使用
grant replication slave on *.* to 'myslave'@'172.16.88.%' identified by '123456';
 
#允许manager使用
grant all privileges on *.* to 'mha'@'172.16.88.%' identified by 'manager';
 
#防止从库通过主机名连接不上主库
grant all privileges on *.* to 'mha'@'master' identified by 'manager';
grant all privileges on *.* to 'mha'@'slave1' identified by 'manager';
grant all privileges on *.* to 'mha'@'slave2' identified by 'manager';

flush privileges;    #刷新权限

在master主服务器上查看状态

show master status;
#查询到当前master主服务器二进制日志是master-bin.000001,偏移量是1743

在两个从服务器上执行同步操作

change master to master_host='172.16.88.66',master_user='myslave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=1743;
 
#master_host='172.16.88.66':设置主服务器的IP地址为172.16.88.66。
#master_user='myslave':设置用于复制的用户为'myslave',这个用户在主服务器上必须拥有replication slave权限
#master_password='123456':设置复制用户的密码为'123456'。在实际生产环境中,务必使用强密码
#master_log_file='master-bin.000001':指定从哪个二进制日志文件开始复制,这里是从'master-bin.000001'文件开始
#master_log_pos=1743:指定在上述二进制日志文件中的起始位置为1743
 
#执行这个命令之后,从服务器将开始尝试连接主服务器,并从指定的日志文件和位置开始接收并执行主服务器上的数据变更事件,以实现主从复制的功能。在执行此命令前,请确保主服务器的二进制日志配置正确,且从服务器有权访问主服务器。此外,执行完该命令后通常还需要执行START SLAVE命令来启动复制进程
 
start slave;  #开启主从同步
show slave status\G    #查看从服务器当前状态,必须保证IO和SQL线程工作正常即Yes

注:

一般 Slave_IO_Running: No 的可能性(一步步排查):

  • 网络不通
  • my.cnf配置有问题
  • 设置主从同步时:密码、file文件名、pos偏移量不对
  • 防火墙、核心防护没有关闭 

配置读写分离操作

将两个从服务器设置为只读模式,那么两个从服务器只提供客户端的读操作,而客户端的写操作则只有主服务器可主持,这样就实现了读写分离的简单操作

set global read_only=1;
#两个从服务器上配置只读模式

1.3、测试主从同步效果

在 master主服务器 上创建库和表,并插入数据,测试两个从服务器是否同步数据

create database AAA;
use AAA;
create table aaa (id int,name char(10));
insert into aaa values (1,'cxc');

在两个从服务器slave1和slave2上查看是否同步到master主服务器的数据 

2、部署MHA

2.1、安装 MHA 所有组件

所有设备都需安装 node 组件

#所有服务器设备都需安装epel额外源和依赖包
yum install epel-release.noarch -y
 
yum install -y perl-DBD-MySQL \
perl-Config-Tiny \
perl-Log-Dispatch \
perl-Parallel-ForkManager \
perl-ExtUtils-CBuilder \
perl-ExtUtils-MakeMaker \
perl-CPAN

对于每个操作系统版本不一样,这里 CentOS7.6选择 0.57 版本。
在所有服务器上必须先安装 node 组件,最后在 MHA-manager 节点上安装 manager 组件,因为 manager 依赖 node 组件。

#所有设备服务器都需要安装 node 组件
cd /opt
tar zxvf mha4mysql-node-0.57.tar.gz
cd mha4mysql-node-0.57
perl Makefile.PL
make && make install

在 MHA-manager 服务器上安装 manager 组件

[root@manager ~]#cd /opt
[root@manager opt]#tar zxvf mha4mysql-manager-0.57.tar.gz
[root@manager opt]#cd mha4mysql-manager-0.57
[root@manager mha4mysql-manager-0.57]#perl Makefile.PL
[root@manager mha4mysql-manager-0.57]#make && make install

manager 组件安装完后其工具详解

manager 组件安装后在/usr/local/bin 下面会生成几个工具,主要包括以下几个

masterha_check_ssh      #检查 MHA 的 SSH 配置状况
masterha_check_repl     #检查 MySQL 复制状况
masterha_manger         #启动 manager的脚本
masterha_check_status   #检测当前 MHA 运行状态
masterha_master_monitor #检测 master 是否宕机
masterha_master_switch  #控制故障转移(自动或者 手动)
masterha_conf_host      #添加或删除配置的 server 信息
masterha_stop           #关闭manager

node 组件安装后也会在/usr/local/bin 下面会生成几个脚本(这些工具通常由 MHAManager 的脚本触发,无需人为操作)主要如下:

save_binary_logs       #保存和复制 master 的二进制日志
apply_diff_relay_logs  #识别差异的中继日志事件并将其差异的事件应用于其他的 slave
filter_mysqlbinlog     #去除不必要的 ROLLBACK 事件(MHA 已不再使用这个工具)
purge_relay_logs       #清除中继日志(不会阻塞 SQL 线程)

2.2、所有设备配置无密码认证

在 MHA-manager 服务器上配置到所有主从mysql数据库的无密码认证

[root@manager ~]#ssh-keygen -t rsa
#一路回车到底
[root@manager ~]#ssh-copy-id 172.16.12.66
#输入yes和登录密码
[root@manager ~]#ssh-copy-id 172.16.12.44
[root@manager ~]#ssh-copy-id 172.16.12.55

在 master 主服务器上配置到从服务器 slave1 和 slave2 的免密登录

[root@master ~]#ssh-keygen -t rsa
[root@master ~]#ssh-copy-id 172.16.12.44
[root@master ~]#ssh-copy-id 172.16.12.55

在 slave1从服务器 上配置到 master主服务器 和 slave2从服务器 的免密登录

[root@slave1 ~]#ssh-keygen -t rsa
[root@slave1 ~]#ssh-copy-id 172.16.12.66
[root@slave1 ~]#ssh-copy-id 172.16.12.55

在 slave2从服务器 上配置到 master主服务器 和 slave1从服务器 的免密登录

[root@slave2 ~]#ssh-keygen -t rsa
[root@slave2 ~]#ssh-copy-id 172.16.12.66
[root@slave2 ~]#ssh-copy-id 172.16.12.55

2.3、 在manager服务器上配置MHA

复制相关脚本到/usr/local/bin 目录

[root@manager ~]#cp -a /opt/mha4mysql-manager-0.57/samples/scripts/  /usr/local/bin/
[root@manager ~]#ls /usr/local/bin/scripts/
 
master_ip_failover  		#自动切换时 VIP 管理的脚本
master_ip_online_change 	#在线切换时 vip 的管理
power_manager 				#故障发生后关闭主机的脚本
send_report 				#因故障切换后发送报警的脚本

复制VIP 管理的脚本到规定目录并修改

复制上述的自动切换时 VIP 管理的脚本到 /usr/local/bin 目录,这里使用master_ip_failover脚本来管理 VIP 和故障切换

[root@manager ~]#cd /usr/local/bin
[root@manager bin]#cp /usr/local/bin/scripts/master_ip_failover /usr/local/bin

修改内容如下:(删除原有内容,直接复制并修改vip相关参数)

[root@manager bin]#vim /usr/local/bin/master_ip_failover
#全部删除原有的所有内容,并直接复制以下内容并修改vip相关参数
#要在末行模式输入:set paste,再粘贴
 
#!/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.12.200';
#指定vip的地址
my $brdc = '172.16.12.255';
#指定vip的广播地址
my $ifdev = 'ens33';
#指定vip绑定的网卡
my $key = '1';
#指定vip绑定的虚拟网卡序列号
my $ssh_start_vip = "/sbin/ifconfig ens33:$key $vip"; 
#代表此变量值为ifconfig ens33:1 172.16.12.200
my $ssh_stop_vip = "/sbin/ifconfig ens33:$key down";
#代表此变量值为ifconfig ens33:1 172.16.12.200 down
my $exit_code = 0;
#指定退出状态码为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";
}

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

创建 MHA 软件目录并拷贝配置文件,这里使用app1.cnf配置文件来管理 mysql 节点服务器

[root@manager ~]#mkdir /etc/masterha
[root@manager ~]#cp /opt/mha4mysql-manager-0.57/samples/conf/app1.cnf  /etc/masterha/

修改app1.cnf配置文件

[root@manager ~]#vim /etc/masterha/app1.cnf						
#删除原有内容,直接复制并修改节点服务器的IP地址
 
[server default]
manager_log=/var/log/masterha/app1/manager.log
manager_workdir=/var/log/masterha/app1
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
password=manager
ping_interval=1
remote_workdir=/tmp
repl_password=123456
repl_user=myslave
secondary_check_script=/usr/local/bin/masterha_secondary_check -s 172.16.12.12 -s 172.16.12.13
shutdown_script=""
ssh_user=root
user=mha
 
[server1]
hostname=172.16.12.10
port=3306
 
[server2]
candidate_master=1
check_repl_delay=0
hostname=172.16.12.12
port=3306
 
[server3]
hostname=172.16.12.13
port=3306

#app1.cnf配置文件语句详解
 
[server default]
manager_log=/var/log/masterha/app1/manager.log
#manager日志
manager_workdir=/var/log/masterha/app1
#manager工作目录
master_binlog_dir=/usr/local/mysql/data
#master保存binlog的位置,这里的路径要与master里配置的binlog的路径一致,以便MHA能找到
master_ip_failover_script=/usr/local/bin/master_ip_failover
#设置自动failover时候的切换脚本,也就是上面的那个脚本
master_ip_online_change_script=/usr/local/bin/master_ip_online_change
#设置手动切换时候的切换脚本
password=manager
#设置mysql中root用户的密码,这个密码是前文中创建监控用户的那个密码
ping_interval=1
#设置监控主库,发送ping包的时间间隔,默认是3秒,尝试三次没有回应的时候自动进行failover
remote_workdir=/tmp
#设置远端mysql在发生切换时binlog的保存位置
repl_password=123
#设置复制用户的密码
repl_user=myslave
#设置复制用户的用户
secondary_check_script=/usr/local/bin/masterha_secondary_check -s 172.16.12.12 -s 172.16.12.13
#指定检查的从服务器IP地址
shutdown_script=""
#设置故障发生后关闭故障主机脚本(该脚本的主要作用是关闭主机防止发生脑裂,这里没有使用)
ssh_user=root
#设置ssh的登录用户名
user=mha
#设置监控用户root
 
[server1]
hostname=172.16.12.10
port=3306
 
[server2]
candidate_master=1
#设置为候选master,设置该参数以后,发生主从切换以后将会将此从库提升为主库,即使这个从库不是集群中最新的slave
check_repl_delay=0
#默认情况下如果一个slave落后master 超过100M的relay logs的话,MHA将不会选择该slave作为一个新的master, 因为对于这个slave的恢复需要花费很长时间;通过设置check_repl_delay=0,MHA触发切换在选择一个新的master的时候将会忽略复制延时,这个参数对于设置了candidate_master=1的主机非常有用,因为这个候选主在切换的过程中一定是新的master
hostname=172.16.12.12
port=3306
 
[server3]
hostname=172.16.12.13
port=3306

第一次配置需在 master 上手动开启虚拟IP

[root@master ~]#ifconfig ens33:1 172.16.88.200/24
[root@master ~]#ip a

2.4、在 manager 服务器上启动 MHA

[root@manager ~]#nohup masterha_manager --conf=/etc/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/masterha/app1/manager.log 2>&1 &
 
#解释
这条命令是在Linux环境下启动MHA(MySQL Master High Availability)管理器并执行特定操作的一个示例。让我们逐部分解析这个命令:
 
nohup: nohup 是一个Unix/Linux命令,用于运行另一个命令并在后台运行,即使用户注销系统,命令也将继续运行。通过nohup启动程序可以使其在终端断开连接后仍然运行。
 
masterha_manager: 这是MHA工具的一部分,用于管理和监控MySQL主从复制集群,以及在主库出现问题时进行故障切换。
 
--conf=/etc/masterha/app1.cnf: 这个参数指定MHA使用的配置文件路径,里面包含了MHA管理的MySQL集群的各项信息,如主库、从库列表、复制用户、SSH连接信息等。
 
--remove_dead_master_conf: 这个参数指示MHA在检测到主库失效后,从配置文件中移除失效主库的相关配置。
 
--ignore_last_failover: 在缺省情况下,如果 MHA 检测到连续发生宕机,且两次宕机间隔不足 8 小时的话,则不会进行 Failover, 之所以这样限制是为了避免 ping-pong 效应。该参数代表忽略上次 MHA 触发切换产生的文件,默认情况下,MHA 发生切换后会在日志记录,也就是上面设置的日志app1.failover.complete文件,下次再次切换的时候如果发现该目录下存在该文件将不允许触发切换,除非在第一次切换后收到删除该文件,为了方便,这里设置为--ignore_last_failover
 
< /dev/null: 这表示输入来源是空设备文件/dev/null,也就是说不从标准输入读取任何数据。
 
> /var/log/masterha/app1/manager.log: 这是输出重定向,MHA管理器的所有标准输出(stdout)将被写入到指定的这个日志文件中,方便查看MHA的操作记录和状态信息。
 
2>&1: 这是错误输出重定向,将标准错误输出(stderr)也重定向到标准输出,所以这里的stderr同样会被写入到上面提到的日志文件中。
 
&: 最后的符号表明整个命令将在后台运行,不影响当前终端的交互。
 
总的来说,这条命令的作用是启动MHA管理器,在后台运行,根据给定的配置文件对MySQL集群进行监控,并在检测到主库失效时移除失效主库的配置,同时忽略上一次的故障切换结果,所有输出(包括标准输出和错误输出)都将被记录到指定的日志文件中。

2.5、查看 MHA 状态 

[root@manager ~]#masterha_check_status --conf=/etc/masterha/app1.cnf
#查看 MHA 状态,可以看到当前的 master
[root@manager ~]#cat /var/log/masterha/app1/manager.log | grep "current master"
#查看 MHA 日志,也能看到当前的 master

3、模拟单点故障

(1)模拟旧master故障,查看slave1是否自动替换成新的master

在manager服务器实时监控日志记录,等会模拟master出现故障,相应的记录也会随之出现

[root@manager ~]#tailf /var/log/masterha/app1/manager.log
[root@master ~]#systemctl stop mysqld.service  
#模拟master故障,即关闭master主服务器的mysql服务

当旧master出现故障,manager服务器将自动把slave1从服务器替换成新的master主服务器 

(2)查看app1.cnf配置文件内容,是否将故障的旧master删除

正常自动切换一次后,MHA 进程会退出。HMA 会自动修改 app1.cnf 文件内容,将故障的旧master 删除

[root@manager ~]#cat /etc/masterha/app1.cnf

4、单点故障修复

一般旧master的故障修复好,是不会去抢占优先级再次成为master,而是会作为新的slave添加到MHA高可用集群里

 4.1、修复master

上次关闭mysql服务导致故障,这次开启mysql服务即可,但在现实环境中,需要根据各个复杂的情况来进行修复

[root@master ~]#systemctl restart mysqld

4.2、 修复主从

(1)在现主服务器 slave1(172.16.12.12) 查看二进制日志和偏移量

show master status;

reset slave;
 
change master to master_host='172.16.88.55',master_user='myslave',master_password='123456',master_log_file='master-bin.000003',master_log_pos=154;
#旧master服务器变成从服务器,进行同步操作,记得修改二进制日志和偏移量
 
start slave;
show slave status\G

4.3、在 manager 上修改配置文件app1.cnf

在 manager 节点上修改配置文件/etc/masterha/app1.cnf(再把这个旧master(新slave)的记录添加进去,因为它检测掉失效时候会自动消失) 

[root@manager ~]#vim /etc/masterha/app1.cnf 
……
[server1]
hostname=172.16.12.10
port=3306
……

4.4、在manager上重启MHA

[root@manager ~]#nohup masterha_manager --conf=/etc/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/masterha/app1/manager.log 2>&1 &
 
[root@manager ~]#masterha_check_status --conf=/etc/masterha/app1.cnf

4.5、测试主从复制

在新master(旧slave1)服务器上创建新数据,查看新添加的从服务器(旧master)能否同步数据

use AAA;
insert into class values(2,'jhw','江苏无锡');
select * from class;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值