03-MySQL基于MHA的高可用架构的搭建
一、MHA架构的介绍
1、简介
MHA(Master HA)是一款开源的 MySQL 高可用软件,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发的一套比较成熟的MySQL高可用方案,它为MySQL主从复制架构提供了三种故障转移方式:自动故障转移(主库宕机)、手动故障转移(主库宕机)、手动在线灾备切换(主库正常)。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。
2、MHA组成部分
MHA由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。
MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上。MHA Node运行在每台MySQL服务器上,所以需要在每服务器上都安装成功,MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master。整个故障转移过程对应用程序完全透明。
目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当从库。
Manager工具包主要包括以下几个工具:
masterha_check_ssh 检查MHA的SSH配置状况
masterha_check_repl 检查MySQL复制状况
masterha_manger 启动MHA
masterha_check_status 检测当前MHA运行状态
masterha_master_monitor 检测master是否宕机
masterha_master_switch 控制故障转移(自动或者手动)
masterha_conf_host 添加或删除配置的server信息
Node工具包主要包括以下几个工具:
save_binary_logs 保存和复制master的二进制日志
apply_diff_relay_logs 识别差异的中继日志事件并将其差异的事件应用于其他的slave
purge_relay_logs 清除中继日志(不会阻塞SQL线程)
注:这些工具通常由MHA Manager的脚本触发,无需人为操作
3、MHA架构图
4、MHA实现原理
(1)从宕机崩溃的master保存二进制日志事件(binlog events);
(2)识别含有最新更新的slave;
(3)应用差异的中继日志(relay log)到其他的slave;
(4)应用从master保存的二进制日志事件(binlog events);
(5)提升一个slave为新的master;
(6)使其他的slave连接新的master进行复制;
二、MHA架构的搭建
1、测试环境IP配置
机器名称 | IP | 服务器角色 | 备注 |
Manager | 192.168.232.45 | MHA Manager服务器 | 操作系统redhat7.5 |
node1 | 192.168.232.42 | MySQL主节点 | 操作系统redhat7.5;MySQL5.7.22 |
node2 | 192.168.232.43 | MySQL从节点1 | 操作系统redhat7.5;MySQL5.7.22 |
node3 | 192.168.232.44 | MySQL从节点2 | 操作系统redhat7.5;MySQL5.7.22 |
2、配置IP映射
在各节点的/etc/hosts文件中配置如下内容:
192.168.232.42 node1 192.168.232.43 node2 192.168.232.44 node3 192.168.232.45 manager
3、配置4台机器ssh免密互通环境
(1)在node1,node2,node3,manager 4台机器上生成秘钥
命令:ssh-keygen -t rsa
注:出现的交互,直接enter就行
(2)将4台机器的公钥都先拷贝到manager机器上
命令:ssh-copy-id 192.168.232.45
注:上面2步操作在管理节点上(192.168.232.45)上也需要操作
(3)查看管理节点机器下的~/.ssh/authorized_keys下是否有4台机器的公钥,并拷贝到另外3台机器
命令:
cat ~/.ssh/authorized_keys scp ~/.ssh/authorized_keys root@192.168.232.42:~/.ssh/authorized_keys scp ~/.ssh/authorized_keys root@192.168.232.43:~/.ssh/authorized_keys scp ~/.ssh/authorized_keys root@192.168.232.44:~/.ssh/authorized_keys
(4)测试是否可以免密登录
命令:
ssh 192.168.232.42 ssh 192.168.232.43 ssh 192.168.232.44
注:每个节点都测试通过就OK了,最好在其他3个节点都登录一下,因为是拷贝过去的公钥,第一次可能需要交互一下输入yes,下次就不需要了
4、搭建一主多从的复制架构
(1)配置master节点的/etc/my.cnf
[mysqld]
datadir=/mysql/mysql5.7/data
basedir=/mysql/mysql5.7
socket=/tmp/mysql.sock
user=mysql
port=3308
character-set-server=utf8
# skip-grant-tables
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
server-id = 1 //复制集群中的各节点的id,三个节点不能一样
log-bin = mysql-bin //开启二进制日志
relay-log = relay-log //开启中继日志
skip_name_resolve //关闭名称解析(不是必须的)
binlog-do-db=customer //要同步的数据库名称
binlog-ignore-db=mysql //需要忽略的数据库
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
auto-increment-increment=10
auto-increment-offset=1
replicate-do-db=customer
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=sys
log-slave-updates = 1 //使得更新的数据写入二进制日志中
[mysqld_safe]
log-error=/mysql/mysql5.7/log/mysqld.log
#pid-file=/mysql/mysql5.7/run/mysqld/mysqld.pid
注:修改完配置文件,需要重启才能生效
(2)配置slave1和slave2节点的/etc/my.cnf
[mysqld] datadir=/mysql/mysql5.7/data basedir=/mysql/mysql5.7 socket=/tmp/mysql.sock user=mysql port=3308 character-set-server=utf8 # skip-grant-tables # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 server-id = 2 //复制集群中的各节点的id,三个节点不能一样 log-bin = mysql-bin //开启二进制日志 relay-log = relay-log //开启中继日志 binlog_format = row //复制模式使用行模式 relay_log_purge = 0 //是否自动清空不再需要的中继日志 skip_name_resolve //关闭名称解析(不是必须的) read-only=0 //启用只读 binlog-do-db=customer //要同步的数据库名称 binlog-ignore-db=mysql //需要忽略的数据库 binlog-ignore-db=information_schema binlog-ignore-db=performance_schema binlog-ignore-db=sys auto-increment-increment=10 auto-increment-offset=1 replicate-do-db=customer replicate-ignore-db=mysql replicate-ignore-db=information_schema replicate-ignore-db=performance_schema replicate-ignore-db=sys log-slave-updates = 1 //使得更新的数据写入二进制日志中 [mysqld_safe] log-error=/mysql/mysql5.7/log/mysqld.log #pid-file=/mysql/mysql5.7/run/mysqld/mysqld.pid
注:修改完配置文件,需要重启才能生效
(3)在3个节点上都创建用于同步的用户
命令:
mysql> grant replication slave on *.* to 'repl_user1'@'192.168.232.%' identified by '$a123456'; Query OK, 0 rows affected, 1 warning (0.05 sec) mysql> flush privileges; Query OK, 0 rows affected (0.02 sec) mysql> select user,host from user; +---------------+---------------+ | user | host | +---------------+---------------+ | root | % | | repl_user1 | 192.168.232.% | | mysql.session | localhost | | mysql.sys | localhost | +---------------+---------------+ 4 rows in set (0.01 sec) mysql>
注:因为每个节点都有可能成为master,所以3个节点上都需要创建同步的用户,我这里host配置为192.168.232.%意思是192.168.232.网段可以使用该用户。
(4)主节点上创建测试库customer和测试表
mysql> create database customer default character set utf8; Query OK, 1 row affected (0.44 sec) mysql> use customer; Database changed mysql> create table person (id int(10),username varchar(20),age int(10)) ENGINE=InnoDB DEFAULT CHARSET=utf8; Query OK, 0 rows affected (0.14 sec) mysql> insert into person values(1,'jack',19); Query OK, 1 row affected (0.08 sec) mysql> select * from person; +------+----------+------+ | id | username | age | +------+----------+------+ | 1 | jack | 19 | +------+----------+------+ 1 row in set (0.00 sec) mysql>
(5)导出customer库的数据,并copy到其他2个节点
命令:
./mysqldump --master-data -uroot -p customer >/mysql/customer.sql
备注:--master-data :加上改选项,在生成的dump文件中就会将二进制的信息写入到输出文件中,比如MASTER_LOG_FILE 和 MASTER_LOG_POS
(6)把master节点的dump备份文件拷贝到2个slave节点上并恢复数据库
--1、拷贝到node2和node3 [mysql@node1 mysql]$ scp customer.sql mysql@192.168.232.43:/mysql mysql@192.168.232.43's password: customer.sql 100% 2031 696.1KB/s 00:00 [mysql@node1 mysql]$ scp customer.sql mysql@192.168.232.44:/mysql mysql@192.168.232.44's password: customer.sql 100% 2031 617.9KB/s 00:00
--2、node2上恢复数据库
mysql> create database customer default character set utf8;
Query OK, 1 row affected (0.35 sec)
mysql> exit
Bye
[mysql@node2 ~]$ mysql -uroot -p customer < /mysql/customer.sql
Enter password:
[mysql@node2 ~]$ mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.22-log MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select * from customer.person;
+------+----------+------+
| id | username | age |
+------+----------+------+
| 1 | jack | 19 |
+------+----------+------+
1 row in set (0.01 sec)
mysql>
--3、node3上恢复数据库
mysql> create database customer default character set utf8;
Query OK, 1 row affected (0.07 sec)
mysql> exit
Bye
[mysql@node3 ~]$ mysql -uroot -p customer < /mysql/customer.sql
Enter password:
[mysql@node3 ~]$ mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.22-log MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select * from customer.person;
+------+----------+------+
| id | username | age |
+------+----------+------+
| 1 | jack | 19 |
+------+----------+------+
1 row in set (0.01 sec)
mysql>
注:slave节点上恢复数据库之前,需要先把库创建好
(7)查看master节点的binary日志名和偏移量
命令:
mysql> show master status\G *************************** 1. row *************************** File: mysql-bin.000002 Position: 892 Binlog_Do_DB: customer Binlog_Ignore_DB: mysql,information_schema,performance_schema,sys Executed_Gtid_Set: 1 row in set (0.00 sec) mysql>
注:也可以去我们备份出的dump里查看,如果生产上master节点还有业务连进来,就要以dump文件里的File和Position为准了
(8)在2个slave节点开启主从同步
命令:
mysql> CHANGE MASTER TO -> MASTER_HOST='192.168.232.42', -> MASTER_USER='repl_user1', -> MASTER_PORT=3308, -> MASTER_PASSWORD='$a123456', -> MASTER_LOG_FILE='mysql-bin.000002', -> MASTER_LOG_POS=892; Query OK, 0 rows affected, 2 warnings (0.59 sec) mysql>
(9)开启2个slave节点的同步,查看slave的状态
mysql> start slave; Query OK, 0 rows affected (0.02 sec) mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.232.42 Master_User: repl_user1 Master_Port: 3308 Connect_Retry: 60 Master_Log_File: mysql-bin.000002 Read_Master_Log_Pos: 892 Relay_Log_File: relay-log.000002 Relay_Log_Pos: 320 Relay_Master_Log_File: mysql-bin.000002 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: customer Replicate_Ignore_DB: mysql,information_schema,performance_schema,sys Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 892 Relay_Log_Space: 521 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 1 Master_UUID: 5eb9dc85-2d68-11eb-acf4-000c29cddf72 Master_Info_File: /mysql/mysql5.7/data/master.info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0 Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: 1 row in set (0.00 sec) mysql>
(10)在master节点插入数据,看slave节点是否同步
--1、master节点 mysql> use customer; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> insert into person values(2,'rose',56); Query OK, 1 row affected (0.01 sec) mysql> select * from person; +------+----------+------+ | id | username | age | +------+----------+------+ | 1 | jack | 19 | | 2 | rose | 56 | +------+----------+------+ 2 rows in set (0.00 sec) mysql> --2、slave节点 [mysql@node2 ~]$ mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 7 Server version: 5.7.22-log MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> select * from customer.person; +------+----------+------+ | id | username | age | +------+----------+------+ | 1 | jack | 19 | | 2 | rose | 56 | +------+----------+------+ 2 rows in set (0.00 sec) mysql>
--3、master节点查看slave
mysql> show slave hosts;
+-----------+------+------+-----------+--------------------------------------+
| Server_id | Host | Port | Master_id | Slave_UUID |
+-----------+------+------+-----------+--------------------------------------+
| 3 | | 3308 | 1 | 0b8c9b28-3143-11eb-b7bf-000c2927b3e8 |
| 2 | | 3308 | 1 | 2aa26dac-2df4-11eb-b45c-000c29c918c1 |
+-----------+------+------+-----------+--------------------------------------+
2 rows in set (0.00 sec)
注:数据已经可以同步,主从架构已经搭建完成。
5、搭建MHA
(1)安装MHA包
* manager节点和node节点都需要安装:mha4mysql-node-0.58-0.el7.centos.noarch.rpm
[root@node1 cdrom]# cd /mysql/mha/ [root@node1 mha]# ll total 36 -rw-r--r--. 1 mysql mysql 36328 Nov 28 15:57 mha4mysql-node-0.58-0.el7.centos.noarch.rpm [root@node1 mha]# yum install -y mha4mysql-node-0.58-0.el7.centos.noarch.rpm Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server. You can use subscription-manager to register. Examining mha4mysql-node-0.58-0.el7.centos.noarch.rpm: mha4mysql-node-0.58-0.el7.centos.noarch Marking mha4mysql-node-0.58-0.el7.centos.noarch.rpm to be installed Resolving Dependencies --> Running transaction check ---> Package mha4mysql-node.noarch 0:0.58-0.el7.centos will be installed --> Finished Dependency Resolution Dependencies Resolved ===================================================================================================== Package Arch Version Repository Size ===================================================================================================== Installing: mha4mysql-node noarch 0.58-0.el7.centos /mha4mysql-node-0.58-0.el7.centos.noarch 106 k Transaction Summary ===================================================================================================== Install 1 Package Total size: 106 k Installed size: 106 k Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : mha4mysql-node-0.58-0.el7.centos.noarch 1/1 Verifying : mha4mysql-node-0.58-0.el7.centos.noarch 1/1 Installed: mha4mysql-node.noarch 0:0.58-0.el7.centos Complete! [root@node1 mha]# rpm -qa | grep mha mha4mysql-node-0.58-0.el7.centos.noarch
[root@node1 mha]#
注:mha4mysql-node是依赖mariadb-libs和perl-DBD-MySQL这2个包的,系统一般会自带,如果安装mysql的时候删除了,需要使用本地yum源再安装一次即可,错误如下:
* manager节点需另外安装:mha4mysql-manager-0.58-0.el7.centos.noarch.rpm
mha4mysql-manager依赖的包:
perl-Config-Tiny-2.14-7.el7.noarch.rpm perl-Email-Date-Format-1.002-15.el7.noarch.rpm perl-Log-Dispatch-2.41-2.2.noarch.rpm perl-Mail-Sender-0.8.23-1.el7.noarch.rpm perl-Mail-Sendmail-0.79-21.el7.noarch.rpm perl-MIME-Lite-3.030-1.el7.noarch.rpm perl-MIME-Types-1.38-2.el7.noarch.rpm perl-Parallel-ForkManager-1.18-2.el7.noarch.rpm
注:上面这些依赖安装完成后,mha4mysql-manager才能安装成功
perl-Log-Dispatch-2.41-2.2.noarch.rpm包安装的时候,可能还需要安装其他依赖的包,那些包本地yum源中都有,只需要配置好本地yum源即可安装成功,错误如下:
Installing:
perl-Log-Dispatch noarch 2.41-2.2 /perl-Log-Dispatch-2.41-2.2.noarch 121 k
Installing for dependencies:
perl-Class-Load noarch 0.20-3.el7 base 27 k
perl-Data-OptList noarch 0.107-9.el7 base 23 k
perl-List-MoreUtils x86_64 0.33-9.el7 base 58 k
perl-MailTools noarch 2.12-2.el7 base 108 k
perl-Module-Implementation noarch 0.06-6.el7 base 17 k
perl-Module-Runtime noarch 0.013-4.el7 base 19 k
perl-Net-SMTP-SSL noarch 1.01-13.el7 base 9.1 k
perl-Package-DeprecationManager noarch 0.13-7.el7 base 19 k
perl-Package-Stash noarch 0.34-2.el7 base 34 k
perl-Package-Stash-XS x86_64 0.26-3.el7 base 31 k
perl-Params-Util x86_64 1.07-6.el7 base 38 k
perl-Params-Validate x86_64 1.08-4.el7 base 69 k
perl-Sub-Install noarch 0.926-6.el7 base 21 k
perl-Sys-Syslog x86_64 0.33-3.el7 base 42 k
perl-Try-Tiny noarch 0.12-2.el7 base 23 k
Transaction Summary
=====================================================================================================
Install 1 Package (+15 Dependent packages)
Total size: 659 k
Total download size: 538 k
Installed size: 1.1 M
Downloading packages:
Error downloading packages:
perl-Sub-Install-0.926-6.el7.noarch: [Errno 256] No more mirrors to try.
perl-Module-Implementation-0.06-6.el7.noarch: [Errno 256] No more mirrors to try.
perl-Params-Validate-1.08-4.el7.x86_64: [Errno 256] No more mirrors to try.
perl-Package-DeprecationManager-0.13-7.el7.noarch: [Errno 256] No more mirrors to try.
perl-Module-Runtime-0.013-4.el7.noarch: [Errno 256] No more mirrors to try.
perl-MailTools-2.12-2.el7.noarch: [Errno 256] No more mirrors to try.
perl-Package-Stash-XS-0.26-3.el7.x86_64: [Errno 256] No more mirrors to try.
perl-Params-Util-1.07-6.el7.x86_64: [Errno 256] No more mirrors to try.
perl-Package-Stash-0.34-2.el7.noarch: [Errno 256] No more mirrors to try.
perl-Sys-Syslog-0.33-3.el7.x86_64: [Errno 256] No more mirrors to try.
perl-Data-OptList-0.107-9.el7.noarch: [Errno 256] No more mirrors to try.
perl-List-MoreUtils-0.33-9.el7.x86_64: [Errno 256] No more mirrors to try.
perl-Net-SMTP-SSL-1.01-13.el7.noarch: [Errno 256] No more mirrors to try.
perl-Try-Tiny-0.12-2.el7.noarch: [Errno 256] No more mirrors to try.
perl-Class-Load-0.20-3.el7.noarch: [Errno 256] No more mirrors to try.
[root@manager rpm]# yum install -y mha4mysql-manager-0.58-0.el7.centos.noarch.rpm Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server. You can use subscription-manager to register. Examining mha4mysql-manager-0.58-0.el7.centos.noarch.rpm: mha4mysql-manager-0.58-0.el7.centos.noarch Marking mha4mysql-manager-0.58-0.el7.centos.noarch.rpm to be installed Resolving Dependencies --> Running transaction check ---> Package mha4mysql-manager.noarch 0:0.58-0.el7.centos will be installed --> Finished Dependency Resolution Dependencies Resolved ===================================================================================================== Package Arch Version Repository Size ===================================================================================================== Installing: mha4mysql-manager noarch 0.58-0.el7.centos /mha4mysql-manager-0.58-0.el7.centos.noarch 328 k Transaction Summary ===================================================================================================== Install 1 Package Total size: 328 k Installed size: 328 k Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : mha4mysql-manager-0.58-0.el7.centos.noarch 1/1 Verifying : mha4mysql-manager-0.58-0.el7.centos.noarch 1/1 Installed: mha4mysql-manager.noarch 0:0.58-0.el7.centos Complete! [root@manager rpm]#
* 安装包已上传到百度云盘,可自行下载:
链接:https://pan.baidu.com/s/1YQ-1HkSbBbMOjt5SFI9FKw 提取码:n0fm
(2)在3个节点上创建拥有管理权的用户
命令:
mysql> grant all on *.* to 'mhaadmin'@'192.168.232.%' identified by '123456'; Query OK, 0 rows affected, 1 warning (0.01 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> select user,host from user; +---------------+---------------+ | user | host | +---------------+---------------+ | root | % | | mhaadmin | 192.168.232.% | | repl_user1 | 192.168.232.% | | mysql.session | localhost | | mysql.sys | localhost | +---------------+---------------+ 5 rows in set (0.00 sec) mysql>
注:以上命令,3个节点都执行
(3)配置mha.cnf文件
* 配置文件的位置:/etc/mha_master/mha.cnf
* 配置文件的内容如下:
[server default] user=mhaadmin //mha管理用户 password=123456 //mha管理密码 manager_workdir=/mha //mha自己的工作路径 manager_log=/mha/log/mha_manager.log //mha的日志路径 remote_workdir=/mysql/mha //远程主机的工作目录 ssh_user=root //ssh免密登录的用户 repl_user=repl_user1 //数据库主从复制的用户 repl_password=$a123456 //数据库主从复制用户的密码 ping_interval=1 //ping间隔时长 [server1] //节点1 hostname=192.168.232.42 ssh_port=22 port=3308 master_binlog_dir=/mysql/mysql5.7/data candidate_master=1 //将来可不可以成为master的候选节点 [server2] hostname=192.168.232.43 ssh_port=22 port=3308 master_binlog_dir=/mysql/mysql5.7/data candidate_master=1 [server3] hostname=192.168.232.44 ssh_port=22 port=3308 master_binlog_dir=/mysql/mysql5.7/data candidate_master=1
(4)MHA检测各节点之间ssh互信是否ok
[root@manager mha_master]# masterha_check_ssh -conf=/etc/mha_master/mha.cnf Wed Dec 2 17:37:21 2020 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping. Wed Dec 2 17:37:21 2020 - [info] Reading application default configuration from /etc/mha_master/mha.cnf.. Wed Dec 2 17:37:21 2020 - [info] Reading server configuration from /etc/mha_master/mha.cnf.. Wed Dec 2 17:37:21 2020 - [info] Starting SSH connection tests.. Wed Dec 2 17:37:25 2020 - [debug] Wed Dec 2 17:37:22 2020 - [debug] Connecting via SSH from root@192.168.232.44(192.168.232.44:22) to root@192.168.232.42(192.168.232.42:22).. Wed Dec 2 17:37:23 2020 - [debug] ok. Wed Dec 2 17:37:23 2020 - [debug] Connecting via SSH from root@192.168.232.44(192.168.232.44:22) to root@192.168.232.43(192.168.232.43:22).. Wed Dec 2 17:37:24 2020 - [debug] ok. Wed Dec 2 17:37:25 2020 - [debug] Wed Dec 2 17:37:21 2020 - [debug] Connecting via SSH from root@192.168.232.42(192.168.232.42:22) to root@192.168.232.44(192.168.232.44:22).. Wed Dec 2 17:37:22 2020 - [debug] ok. Wed Dec 2 17:37:22 2020 - [debug] Connecting via SSH from root@192.168.232.42(192.168.232.42:22) to root@192.168.232.43(192.168.232.43:22).. Wed Dec 2 17:37:24 2020 - [debug] ok. Wed Dec 2 17:37:26 2020 - [debug] Wed Dec 2 17:37:22 2020 - [debug] Connecting via SSH from root@192.168.232.43(192.168.232.43:22) to root@192.168.232.42(192.168.232.42:22).. Wed Dec 2 17:37:23 2020 - [debug] ok. Wed Dec 2 17:37:23 2020 - [debug] Connecting via SSH from root@192.168.232.43(192.168.232.43:22) to root@192.168.232.44(192.168.232.44:22).. Wed Dec 2 17:37:25 2020 - [debug] ok. Wed Dec 2 17:37:26 2020 - [info] All SSH connection tests passed successfully. [root@manager mha_master]#
(5)MHA检测MySQL复制集群连接配置是否OK
[root@manager mha_master]# masterha_check_repl -conf=/etc/mha_master/mha.cnf Wed Dec 2 17:58:45 2020 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping. Wed Dec 2 17:58:45 2020 - [info] Reading application default configuration from /etc/mha_master/mha.cnf.. Wed Dec 2 17:58:45 2020 - [info] Reading server configuration from /etc/mha_master/mha.cnf.. Wed Dec 2 17:58:45 2020 - [info] MHA::MasterMonitor version 0.58. Wed Dec 2 17:58:46 2020 - [info] GTID failover mode = 0 Wed Dec 2 17:58:46 2020 - [info] Dead Servers: Wed Dec 2 17:58:46 2020 - [info] Alive Servers: Wed Dec 2 17:58:46 2020 - [info] 192.168.232.42(192.168.232.42:3308) Wed Dec 2 17:58:46 2020 - [info] 192.168.232.43(192.168.232.43:3308) Wed Dec 2 17:58:46 2020 - [info] 192.168.232.44(192.168.232.44:3308) Wed Dec 2 17:58:46 2020 - [info] Alive Slaves: Wed Dec 2 17:58:46 2020 - [info] 192.168.232.43(192.168.232.43:3308) Version=5.7.22-log (oldest major version between slaves) log-bin:enabled Wed Dec 2 17:58:46 2020 - [info] Replicating from 192.168.232.42(192.168.232.42:3308) Wed Dec 2 17:58:46 2020 - [info] Primary candidate for the new Master (candidate_master is set) Wed Dec 2 17:58:46 2020 - [info] 192.168.232.44(192.168.232.44:3308) Version=5.7.22-log (oldest major version between slaves) log-bin:enabled Wed Dec 2 17:58:46 2020 - [info] Replicating from 192.168.232.42(192.168.232.42:3308) Wed Dec 2 17:58:46 2020 - [info] Primary candidate for the new Master (candidate_master is set) Wed Dec 2 17:58:46 2020 - [info] Current Alive Master: 192.168.232.42(192.168.232.42:3308) Wed Dec 2 17:58:46 2020 - [info] Checking slave configurations.. Wed Dec 2 17:58:46 2020 - [info] read_only=1 is not set on slave 192.168.232.43(192.168.232.43:3308). Wed Dec 2 17:58:46 2020 - [info] read_only=1 is not set on slave 192.168.232.44(192.168.232.44:3308). Wed Dec 2 17:58:46 2020 - [info] Checking replication filtering settings.. Wed Dec 2 17:58:46 2020 - [info] binlog_do_db= customer, binlog_ignore_db= information_schema,mysql,performance_schema,sys Wed Dec 2 17:58:46 2020 - [info] Replication filtering check ok. Wed Dec 2 17:58:46 2020 - [info] GTID (with auto-pos) is not supported Wed Dec 2 17:58:46 2020 - [info] Starting SSH connection tests.. Wed Dec 2 17:58:50 2020 - [info] All SSH connection tests passed successfully. Wed Dec 2 17:58:50 2020 - [info] Checking MHA Node version.. Wed Dec 2 17:58:51 2020 - [info] Version check ok. Wed Dec 2 17:58:51 2020 - [info] Checking SSH publickey authentication settings on the current master.. Wed Dec 2 17:58:52 2020 - [info] HealthCheck: SSH to 192.168.232.42 is reachable. Wed Dec 2 17:58:52 2020 - [info] Master MHA Node version is 0.58. Wed Dec 2 17:58:52 2020 - [info] Checking recovery script configurations on 192.168.232.42(192.168.232.42:3308).. Wed Dec 2 17:58:52 2020 - [info] Executing command: save_binary_logs --command=test --start_pos=4 --binlog_dir=/mysql/mysql5.7/data --output_file=/mysql/mha/save_binary_logs_test --manager_version=0.58 --start_file=mysql-bin.000002 Wed Dec 2 17:58:52 2020 - [info] Connecting to root@192.168.232.42(192.168.232.42:22).. Creating /mysql/mha if not exists.. ok. Checking output directory is accessible or not.. ok. Binlog found at /mysql/mysql5.7/data, up to mysql-bin.000002 Wed Dec 2 17:58:53 2020 - [info] Binlog setting check done. Wed Dec 2 17:58:53 2020 - [info] Checking SSH publickey authentication and checking recovery script configurations on all alive slave servers.. Wed Dec 2 17:58:53 2020 - [info] Executing command : apply_diff_relay_logs --command=test --slave_user='mhaadmin' --slave_host=192.168.232.43 --slave_ip=192.168.232.43 --slave_port=3308 --workdir=/mysql/mha --target_version=5.7.22-log --manager_version=0.58 --relay_log_info=/mysql/mysql5.7/data/relay-log.info --relay_dir=/mysql/mysql5.7/data/ --slave_pass=xxx Wed Dec 2 17:58:53 2020 - [info] Connecting to root@192.168.232.43(192.168.232.43:22).. Checking slave recovery environment settings.. Opening /mysql/mysql5.7/data/relay-log.info ... ok. Relay log found at /mysql/mysql5.7/data, up to relay-log.000002 Temporary relay log file is /mysql/mysql5.7/data/relay-log.000002 Checking if super_read_only is defined and turned on.. not present or turned off, ignoring. Testing mysql connection and privileges.. mysql: [Warning] Using a password on the command line interface can be insecure. done. Testing mysqlbinlog output.. done. Cleaning up test file(s).. done. Wed Dec 2 17:58:54 2020 - [info] Executing command : apply_diff_relay_logs --command=test --slave_user='mhaadmin' --slave_host=192.168.232.44 --slave_ip=192.168.232.44 --slave_port=3308 --workdir=/mysql/mha --target_version=5.7.22-log --manager_version=0.58 --relay_log_info=/mysql/mysql5.7/data/relay-log.info --relay_dir=/mysql/mysql5.7/data/ --slave_pass=xxx Wed Dec 2 17:58:54 2020 - [info] Connecting to root@192.168.232.44(192.168.232.44:22).. Checking slave recovery environment settings.. Opening /mysql/mysql5.7/data/relay-log.info ... ok. Relay log found at /mysql/mysql5.7/data, up to relay-log.000002 Temporary relay log file is /mysql/mysql5.7/data/relay-log.000002 Checking if super_read_only is defined and turned on.. not present or turned off, ignoring. Testing mysql connection and privileges.. mysql: [Warning] Using a password on the command line interface can be insecure. done. Testing mysqlbinlog output.. done. Cleaning up test file(s).. done. Wed Dec 2 17:58:55 2020 - [info] Slaves settings check done. Wed Dec 2 17:58:55 2020 - [info] 192.168.232.42(192.168.232.42:3308) (current master) +--192.168.232.43(192.168.232.43:3308) +--192.168.232.44(192.168.232.44:3308) Wed Dec 2 17:58:55 2020 - [info] Checking replication health on 192.168.232.43.. Wed Dec 2 17:58:55 2020 - [info] ok. Wed Dec 2 17:58:55 2020 - [info] Checking replication health on 192.168.232.44.. Wed Dec 2 17:58:55 2020 - [info] ok. Wed Dec 2 17:58:55 2020 - [warning] master_ip_failover_script is not defined. Wed Dec 2 17:58:55 2020 - [warning] shutdown_script is not defined. Wed Dec 2 17:58:55 2020 - [info] Got exit code 0 (Not master dead). MySQL Replication Health is OK.
可能遇到的错误
Wed Dec 2 17:39:22 2020 - [info] Connecting to root@192.168.232.44(192.168.232.44:22).. Can't exec "mysqlbinlog": No such file or directory at /usr/share/perl5/vendor_perl/MHA/BinlogManager.pm line 106. mysqlbinlog version command failed with rc 1:0, please verify PATH, LD_LIBRARY_PATH, and client options at /usr/bin/apply_diff_relay_logs line 532. Wed Dec 2 17:39:22 2020 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln208] Slaves settings check failed! Wed Dec 2 17:39:22 2020 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln416] Slave configuration failed. Wed Dec 2 17:39:22 2020 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln427] Error happened on checking configurations. at /usr/bin/masterha_check_repl line 48. Wed Dec 2 17:39:22 2020 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln525] Error happened on monitoring servers. Wed Dec 2 17:39:22 2020 - [info] Got exit code 1 (Not master dead). MySQL Replication Health is NOT OK!
解决办法:
这个问题是因为没有执行mysqlbinlog的软链接导致的,所以创建软链接即可(三个数据节点都执行)
[root@node1 .ssh]# ln -s /mysql/mysql5.7/bin/mysqlbinlog /usr/local/bin/mysqlbinlog [root@node1 .ssh]# ln -s /mysql/mysql5.7/bin/mysql /usr/local/bin/mysql
(6)启动MHA(也可以不启动,不启动的话就不能自动故障转移了)
--1、启动mha [root@manager mha]# nohup masterha_manager --conf=/etc/mha_master/mha.cnf & >/mha/log/mha_manager.log [1] 2374
--2、查看mha的状态 [root@manager mha]# masterha_check_status --conf=/etc/mha_master/mha.cnf mha (pid:2374) is running(0:PING_OK), master:192.168.232.42 --3、停止mha [root@manager mha]# masterha_stop --conf=/etc/mha_master/mha.cnf Stopped mha successfully. [1]+ Exit 1 nohup masterha_manager --conf=/etc/mha_master/mha.cnf [root@manager mha]# masterha_check_status --conf=/etc/mha_master/mha.cnf mha is stopped(2:NOT_RUNNING).
到这一步,整个MySQL的MHA高可用架构已经搭建完成了,接下来我们就测试一下是否可以实现故障转移吧。
三、MHA故障转移测试
1、自动故障转移(主库宕机)
注:自动故障转移,MHA的状态必须是running状态
(1)关闭主节点服务器
因为现在主节点在node1(192.168.232.42)上,直接重启服务器。
(2)查看MHA日志
192.168.232.43(192.168.232.43:3308): Resetting slave info succeeded. Master failover to 192.168.232.43(192.168.232.43:3308) completed successfully.
注:现在主节点已经变成了node2(192.168.232.43)了
(3)查看新主节点和slave节点的状态
--1、node2节点上查看 mysql> show master status\G *************************** 1. row *************************** File: mysql-bin.000005 Position: 154 Binlog_Do_DB: customer Binlog_Ignore_DB: mysql,information_schema,performance_schema,sys Executed_Gtid_Set: 1 row in set (0.00 sec) mysql> show slave hosts; +-----------+------+------+-----------+--------------------------------------+ | Server_id | Host | Port | Master_id | Slave_UUID | +-----------+------+------+-----------+--------------------------------------+ | 3 | | 3308 | 2 | 0b8c9b28-3143-11eb-b7bf-000c2927b3e8 | +-----------+------+------+-----------+--------------------------------------+ 1 row in set (0.00 sec) --2、node3节点上查看 mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.232.43 Master_User: repl_user1 Master_Port: 3308 Connect_Retry: 60 Master_Log_File: mysql-bin.000005 Read_Master_Log_Pos: 154 Relay_Log_File: relay-log.000002 Relay_Log_Pos: 320 Relay_Master_Log_File: mysql-bin.000005 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: customer Replicate_Ignore_DB: mysql,information_schema,performance_schema,sys
注:
* 发现192.168.232.43变成了主节点,192.168.232.44变成了从节点,自动转移成功。
* 故障转移成功后,MHA将会自动停止,使用masterha_check_status会看到如下提示:
* 原来的主节点(node1)机器重启后,不会自动和新主同步数据,这个时候最好重新备份一下,重新把该机器加入到现有的主从架构中。
由于我这里是测试环境,没有新增数据,所以直接执行一下change master把node1加入到现有的主从架构里,恢复了
--1、node1上执行change master mysql> CHANGE MASTER TO -> MASTER_HOST='192.168.232.43', -> MASTER_USER='repl_user1', -> MASTER_PORT=3308, -> MASTER_PASSWORD='$a123456', -> MASTER_LOG_FILE='mysql-bin.000005', -> MASTER_LOG_POS=154; Query OK, 0 rows affected, 2 warnings (0.02 sec) --2、启用复制 mysql> start slave -> ; Query OK, 0 rows affected (0.00 sec) mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.232.43 Master_User: repl_user1 Master_Port: 3308 Connect_Retry: 60 Master_Log_File: mysql-bin.000005 Read_Master_Log_Pos: 154 Relay_Log_File: relay-log.000002 Relay_Log_Pos: 320 Relay_Master_Log_File: mysql-bin.000005 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: customer Replicate_Ignore_DB: mysql,information_schema,performance_schema,sys
2、手动故障转移(主库宕机)
注:该场景是在没有启动MHA的情况下,主库宕机了,手动故障转移到其他slave节点。
(1)查看mha监控的状态(mha要是stopped状态)
[root@manager mha]# masterha_check_status --conf=/etc/mha_master/mha.cnf mha is stopped(2:NOT_RUNNING).
(2)停止主库,模拟宕机
--1、停止主库 [mysql@node2 ~]$ service mysql stop Shutting down MySQL............ SUCCESS! --2、查看node1从节点的状态 mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Reconnecting after a failed master event read Master_Host: 192.168.232.43 Master_User: repl_user1 Master_Port: 3308 Connect_Retry: 60 Master_Log_File: mysql-bin.000005 Read_Master_Log_Pos: 154 Relay_Log_File: relay-log.000002 Relay_Log_Pos: 320 Relay_Master_Log_File: mysql-bin.000005 Slave_IO_Running: Connecting Slave_SQL_Running: Yes Replicate_Do_DB: customer Replicate_Ignore_DB: mysql,information_schema,performance_schema,sys --3、查看node3从节点的状态 mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Reconnecting after a failed master event read Master_Host: 192.168.232.43 Master_User: repl_user1 Master_Port: 3308 Connect_Retry: 60 Master_Log_File: mysql-bin.000005 Read_Master_Log_Pos: 154 Relay_Log_File: relay-log.000002 Relay_Log_Pos: 320 Relay_Master_Log_File: mysql-bin.000005 Slave_IO_Running: Connecting Slave_SQL_Running: Yes Replicate_Do_DB: customer Replicate_Ignore_DB: mysql,information_schema,performance_schema,sys
注:2个slave节点的Slave_IO_Running线程的状态已经变成了Connecting状态
(3)手动故障转移到其他slave节点
[root@manager mha]# masterha_master_switch --master_state=dead --conf=/etc/mha_master/mha.cnf --dead_master_host=192.168.232.43 --dead_master_port=3308 --new_master_host=192.168.232.42 --new_master_port=3308 --ignore_last_failover --dead_master_ip=<dead_master_ip> is not set. Using 192.168.232.43. Fri Dec 4 10:25:59 2020 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping. Fri Dec 4 10:25:59 2020 - [info] Reading application default configuration from /etc/mha_master/mha.cnf.. Fri Dec 4 10:25:59 2020 - [info] Reading server configuration from /etc/mha_master/mha.cnf.. Fri Dec 4 10:25:59 2020 - [info] MHA::MasterFailover version 0.58. Fri Dec 4 10:25:59 2020 - [info] Starting master failover. Fri Dec 4 10:25:59 2020 - [info] Fri Dec 4 10:25:59 2020 - [info] * Phase 1: Configuration Check Phase.. Fri Dec 4 10:25:59 2020 - [info] Fri Dec 4 10:26:01 2020 - [info] GTID failover mode = 0 Fri Dec 4 10:26:01 2020 - [info] Dead Servers: Fri Dec 4 10:26:01 2020 - [info] 192.168.232.43(192.168.232.43:3308) Fri Dec 4 10:26:01 2020 - [info] Checking master reachability via MySQL(double check)... Fri Dec 4 10:26:01 2020 - [info] ok. Fri Dec 4 10:26:01 2020 - [info] Alive Servers: Fri Dec 4 10:26:01 2020 - [info] 192.168.232.42(192.168.232.42:3308) Fri Dec 4 10:26:01 2020 - [info] 192.168.232.44(192.168.232.44:3308) Fri Dec 4 10:26:01 2020 - [info] Alive Slaves: Fri Dec 4 10:26:01 2020 - [info] 192.168.232.42(192.168.232.42:3308) Version=5.7.22-log (oldest major version between slaves) log-bin:enabled Fri Dec 4 10:26:01 2020 - [info] Replicating from 192.168.232.43(192.168.232.43:3308) Fri Dec 4 10:26:01 2020 - [info] Primary candidate for the new Master (candidate_master is set) Fri Dec 4 10:26:01 2020 - [info] 192.168.232.44(192.168.232.44:3308) Version=5.7.22-log (oldest major version between slaves) log-bin:enabled Fri Dec 4 10:26:01 2020 - [info] Replicating from 192.168.232.43(192.168.232.43:3308) Fri Dec 4 10:26:01 2020 - [info] Primary candidate for the new Master (candidate_master is set) Master 192.168.232.43(192.168.232.43:3308) is dead. Proceed? (yes/NO): yes Fri Dec 4 10:26:07 2020 - [info] Starting Non-GTID based failover. Fri Dec 4 10:26:07 2020 - [info] Fri Dec 4 10:26:07 2020 - [info] ** Phase 1: Configuration Check Phase completed. Fri Dec 4 10:26:07 2020 - [info] Fri Dec 4 10:26:07 2020 - [info] * Phase 2: Dead Master Shutdown Phase.. Fri Dec 4 10:26:07 2020 - [info] Fri Dec 4 10:26:08 2020 - [info] HealthCheck: SSH to 192.168.232.43 is reachable. Fri Dec 4 10:26:08 2020 - [info] Forcing shutdown so that applications never connect to the current master.. Fri Dec 4 10:26:08 2020 - [warning] master_ip_failover_script is not set. Skipping invalidating dead master IP address. Fri Dec 4 10:26:08 2020 - [warning] shutdown_script is not set. Skipping explicit shutting down of the dead master. Fri Dec 4 10:26:08 2020 - [info] * Phase 2: Dead Master Shutdown Phase completed. Fri Dec 4 10:26:08 2020 - [info] Fri Dec 4 10:26:08 2020 - [info] * Phase 3: Master Recovery Phase.. Fri Dec 4 10:26:08 2020 - [info] Fri Dec 4 10:26:08 2020 - [info] * Phase 3.1: Getting Latest Slaves Phase.. Fri Dec 4 10:26:08 2020 - [info] Fri Dec 4 10:26:08 2020 - [info] The latest binary log file/position on all slaves is mysql-bin.000005:154 Fri Dec 4 10:26:08 2020 - [info] Latest slaves (Slaves that received relay log files to the latest): Fri Dec 4 10:26:08 2020 - [info] 192.168.232.42(192.168.232.42:3308) Version=5.7.22-log (oldest major version between slaves) log-bin:enabled Fri Dec 4 10:26:08 2020 - [info] Replicating from 192.168.232.43(192.168.232.43:3308) Fri Dec 4 10:26:08 2020 - [info] Primary candidate for the new Master (candidate_master is set) Fri Dec 4 10:26:08 2020 - [info] 192.168.232.44(192.168.232.44:3308) Version=5.7.22-log (oldest major version between slaves) log-bin:enabled Fri Dec 4 10:26:08 2020 - [info] Replicating from 192.168.232.43(192.168.232.43:3308) Fri Dec 4 10:26:08 2020 - [info] Primary candidate for the new Master (candidate_master is set) Fri Dec 4 10:26:08 2020 - [info] The oldest binary log file/position on all slaves is mysql-bin.000005:154 Fri Dec 4 10:26:08 2020 - [info] Oldest slaves: Fri Dec 4 10:26:08 2020 - [info] 192.168.232.42(192.168.232.42:3308) Version=5.7.22-log (oldest major version between slaves) log-bin:enabled Fri Dec 4 10:26:08 2020 - [info] Replicating from 192.168.232.43(192.168.232.43:3308) Fri Dec 4 10:26:08 2020 - [info] Primary candidate for the new Master (candidate_master is set) Fri Dec 4 10:26:08 2020 - [info] 192.168.232.44(192.168.232.44:3308) Version=5.7.22-log (oldest major version between slaves) log-bin:enabled Fri Dec 4 10:26:08 2020 - [info] Replicating from 192.168.232.43(192.168.232.43:3308) Fri Dec 4 10:26:08 2020 - [info] Primary candidate for the new Master (candidate_master is set) Fri Dec 4 10:26:08 2020 - [info] Fri Dec 4 10:26:08 2020 - [info] * Phase 3.2: Saving Dead Master's Binlog Phase.. Fri Dec 4 10:26:08 2020 - [info] Fri Dec 4 10:26:09 2020 - [info] Fetching dead master's binary logs.. Fri Dec 4 10:26:09 2020 - [info] Executing command on the dead master 192.168.232.43(192.168.232.43:3308): save_binary_logs --command=save --start_file=mysql-bin.000005 --start_pos=154 --binlog_dir=/mysql/mysql5.7/data --output_file=/mysql/mha/saved_master_binlog_from_192.168.232.43_3308_20201204102559.binlog --handle_raw_binlog=1 --disable_log_bin=0 --manager_version=0.58 Creating /mysql/mha if not exists.. ok. Concat binary/relay logs from mysql-bin.000005 pos 154 to mysql-bin.000005 EOF into /mysql/mha/saved_master_binlog_from_192.168.232.43_3308_20201204102559.binlog .. Binlog Checksum enabled Dumping binlog format description event, from position 0 to 154.. ok. Dumping effective binlog data from /mysql/mysql5.7/data/mysql-bin.000005 position 154 to tail(177).. ok. Binlog Checksum enabled Concat succeeded. saved_master_binlog_from_192.168.232.43_3308_20201204102559.binlog 100% 177 84.5KB/s 00:00 Fri Dec 4 10:26:11 2020 - [info] scp from root@192.168.232.43:/mysql/mha/saved_master_binlog_from_192.168.232.43_3308_20201204102559.binlog to local:/mha/saved_master_binlog_from_192.168.232.43_3308_20201204102559.binlog succeeded. Fri Dec 4 10:26:11 2020 - [info] HealthCheck: SSH to 192.168.232.42 is reachable. Fri Dec 4 10:26:12 2020 - [info] HealthCheck: SSH to 192.168.232.44 is reachable. Fri Dec 4 10:26:13 2020 - [info] Fri Dec 4 10:26:13 2020 - [info] * Phase 3.3: Determining New Master Phase.. Fri Dec 4 10:26:13 2020 - [info] Fri Dec 4 10:26:13 2020 - [info] Finding the latest slave that has all relay logs for recovering other slaves.. Fri Dec 4 10:26:13 2020 - [info] All slaves received relay logs to the same position. No need to resync each other. Fri Dec 4 10:26:13 2020 - [info] 192.168.232.42 can be new master. Fri Dec 4 10:26:13 2020 - [info] New master is 192.168.232.42(192.168.232.42:3308) Fri Dec 4 10:26:13 2020 - [info] Starting master failover.. Fri Dec 4 10:26:13 2020 - [info] From: 192.168.232.43(192.168.232.43:3308) (current master) +--192.168.232.42(192.168.232.42:3308) +--192.168.232.44(192.168.232.44:3308) To: 192.168.232.42(192.168.232.42:3308) (new master) +--192.168.232.44(192.168.232.44:3308) Starting master switch from 192.168.232.43(192.168.232.43:3308) to 192.168.232.42(192.168.232.42:3308)? (yes/NO): yes Fri Dec 4 10:26:18 2020 - [info] New master decided manually is 192.168.232.42(192.168.232.42:3308) Fri Dec 4 10:26:18 2020 - [info] Fri Dec 4 10:26:18 2020 - [info] * Phase 3.4: New Master Diff Log Generation Phase.. Fri Dec 4 10:26:18 2020 - [info] Fri Dec 4 10:26:18 2020 - [info] This server has all relay logs. No need to generate diff files from the latest slave. Fri Dec 4 10:26:18 2020 - [info] Sending binlog.. saved_master_binlog_from_192.168.232.43_3308_20201204102559.binlog 100% 177 147.3KB/s 00:00 Fri Dec 4 10:26:19 2020 - [info] scp from local:/mha/saved_master_binlog_from_192.168.232.43_3308_20201204102559.binlog to root@192.168.232.42:/mysql/mha/saved_master_binlog_from_192.168.232.43_3308_20201204102559.binlog succeeded. Fri Dec 4 10:26:19 2020 - [info] Fri Dec 4 10:26:19 2020 - [info] * Phase 3.5: Master Log Apply Phase.. Fri Dec 4 10:26:19 2020 - [info] Fri Dec 4 10:26:19 2020 - [info] *NOTICE: If any error happens from this phase, manual recovery is needed. Fri Dec 4 10:26:19 2020 - [info] Starting recovery on 192.168.232.42(192.168.232.42:3308).. Fri Dec 4 10:26:19 2020 - [info] Generating diffs succeeded. Fri Dec 4 10:26:19 2020 - [info] Waiting until all relay logs are applied. Fri Dec 4 10:26:19 2020 - [info] done. Fri Dec 4 10:26:19 2020 - [info] Getting slave status.. Fri Dec 4 10:26:19 2020 - [info] This slave(192.168.232.42)'s Exec_Master_Log_Pos equals to Read_Master_Log_Pos(mysql-bin.000005:154). No need to recover from Exec_Master_Log_Pos. Fri Dec 4 10:26:19 2020 - [info] Connecting to the target slave host 192.168.232.42, running recover script.. Fri Dec 4 10:26:19 2020 - [info] Executing command: apply_diff_relay_logs --command=apply --slave_user='mhaadmin' --slave_host=192.168.232.42 --slave_ip=192.168.232.42 --slave_port=3308 --apply_files=/mysql/mha/saved_master_binlog_from_192.168.232.43_3308_20201204102559.binlog --workdir=/mysql/mha --target_version=5.7.22-log --timestamp=20201204102559 --handle_raw_binlog=1 --disable_log_bin=0 --manager_version=0.58 --slave_pass=xxx Fri Dec 4 10:26:20 2020 - [info] MySQL client version is 5.7.22. Using --binary-mode. Applying differential binary/relay log files /mysql/mha/saved_master_binlog_from_192.168.232.43_3308_20201204102559.binlog on 192.168.232.42:3308. This may take long time... Applying log files succeeded. Fri Dec 4 10:26:20 2020 - [info] All relay logs were successfully applied. Fri Dec 4 10:26:20 2020 - [info] Getting new master's binlog name and position.. Fri Dec 4 10:26:20 2020 - [info] mysql-bin.000006:154 Fri Dec 4 10:26:20 2020 - [info] All other slaves should start replication from here. Statement should be: CHANGE MASTER TO MASTER_HOST='192.168.232.42', MASTER_PORT=3308, MASTER_LOG_FILE='mysql-bin.000006', MASTER_LOG_POS=154, MASTER_USER='repl_user1', MASTER_PASSWORD='xxx'; Fri Dec 4 10:26:20 2020 - [warning] master_ip_failover_script is not set. Skipping taking over new master IP address. Fri Dec 4 10:26:20 2020 - [info] ** Finished master recovery successfully. Fri Dec 4 10:26:20 2020 - [info] * Phase 3: Master Recovery Phase completed. Fri Dec 4 10:26:20 2020 - [info] Fri Dec 4 10:26:20 2020 - [info] * Phase 4: Slaves Recovery Phase.. Fri Dec 4 10:26:20 2020 - [info] Fri Dec 4 10:26:20 2020 - [info] * Phase 4.1: Starting Parallel Slave Diff Log Generation Phase.. Fri Dec 4 10:26:20 2020 - [info] Fri Dec 4 10:26:20 2020 - [info] -- Slave diff file generation on host 192.168.232.44(192.168.232.44:3308) started, pid: 4477. Check tmp log /mha/192.168.232.44_3308_20201204102559.log if it takes time.. Fri Dec 4 10:26:21 2020 - [info] Fri Dec 4 10:26:21 2020 - [info] Log messages from 192.168.232.44 ... Fri Dec 4 10:26:21 2020 - [info] Fri Dec 4 10:26:20 2020 - [info] This server has all relay logs. No need to generate diff files from the latest slave. Fri Dec 4 10:26:21 2020 - [info] End of log messages from 192.168.232.44. Fri Dec 4 10:26:21 2020 - [info] -- 192.168.232.44(192.168.232.44:3308) has the latest relay log events. Fri Dec 4 10:26:21 2020 - [info] Generating relay diff files from the latest slave succeeded. Fri Dec 4 10:26:21 2020 - [info] Fri Dec 4 10:26:21 2020 - [info] * Phase 4.2: Starting Parallel Slave Log Apply Phase.. Fri Dec 4 10:26:21 2020 - [info] Fri Dec 4 10:26:21 2020 - [info] -- Slave recovery on host 192.168.232.44(192.168.232.44:3308) started, pid: 4479. Check tmp log /mha/192.168.232.44_3308_20201204102559.log if it takes time.. saved_master_binlog_from_192.168.232.43_3308_20201204102559.binlog 100% 177 126.2KB/s 00:00 Fri Dec 4 10:26:23 2020 - [info] Fri Dec 4 10:26:23 2020 - [info] Log messages from 192.168.232.44 ... Fri Dec 4 10:26:23 2020 - [info] Fri Dec 4 10:26:21 2020 - [info] Sending binlog.. Fri Dec 4 10:26:22 2020 - [info] scp from local:/mha/saved_master_binlog_from_192.168.232.43_3308_20201204102559.binlog to root@192.168.232.44:/mysql/mha/saved_master_binlog_from_192.168.232.43_3308_20201204102559.binlog succeeded. Fri Dec 4 10:26:22 2020 - [info] Starting recovery on 192.168.232.44(192.168.232.44:3308).. Fri Dec 4 10:26:22 2020 - [info] Generating diffs succeeded. Fri Dec 4 10:26:22 2020 - [info] Waiting until all relay logs are applied. Fri Dec 4 10:26:22 2020 - [info] done. Fri Dec 4 10:26:22 2020 - [info] Getting slave status.. Fri Dec 4 10:26:22 2020 - [info] This slave(192.168.232.44)'s Exec_Master_Log_Pos equals to Read_Master_Log_Pos(mysql-bin.000005:154). No need to recover from Exec_Master_Log_Pos. Fri Dec 4 10:26:22 2020 - [info] Connecting to the target slave host 192.168.232.44, running recover script.. Fri Dec 4 10:26:22 2020 - [info] Executing command: apply_diff_relay_logs --command=apply --slave_user='mhaadmin' --slave_host=192.168.232.44 --slave_ip=192.168.232.44 --slave_port=3308 --apply_files=/mysql/mha/saved_master_binlog_from_192.168.232.43_3308_20201204102559.binlog --workdir=/mysql/mha --target_version=5.7.22-log --timestamp=20201204102559 --handle_raw_binlog=1 --disable_log_bin=0 --manager_version=0.58 --slave_pass=xxx Fri Dec 4 10:26:22 2020 - [info] MySQL client version is 5.7.22. Using --binary-mode. Applying differential binary/relay log files /mysql/mha/saved_master_binlog_from_192.168.232.43_3308_20201204102559.binlog on 192.168.232.44:3308. This may take long time... Applying log files succeeded. Fri Dec 4 10:26:22 2020 - [info] All relay logs were successfully applied. Fri Dec 4 10:26:22 2020 - [info] Resetting slave 192.168.232.44(192.168.232.44:3308) and starting replication from the new master 192.168.232.42(192.168.232.42:3308).. Fri Dec 4 10:26:22 2020 - [info] Executed CHANGE MASTER. Fri Dec 4 10:26:22 2020 - [info] Slave started. Fri Dec 4 10:26:23 2020 - [info] End of log messages from 192.168.232.44. Fri Dec 4 10:26:23 2020 - [info] -- Slave recovery on host 192.168.232.44(192.168.232.44:3308) succeeded. Fri Dec 4 10:26:23 2020 - [info] All new slave servers recovered successfully. Fri Dec 4 10:26:23 2020 - [info] Fri Dec 4 10:26:23 2020 - [info] * Phase 5: New master cleanup phase.. Fri Dec 4 10:26:23 2020 - [info] Fri Dec 4 10:26:23 2020 - [info] Resetting slave info on the new master.. Fri Dec 4 10:26:23 2020 - [info] 192.168.232.42: Resetting slave info succeeded. Fri Dec 4 10:26:23 2020 - [info] Master failover to 192.168.232.42(192.168.232.42:3308) completed successfully. Fri Dec 4 10:26:23 2020 - [info] ----- Failover Report ----- mha: MySQL Master failover 192.168.232.43(192.168.232.43:3308) to 192.168.232.42(192.168.232.42:3308) succeeded Master 192.168.232.43(192.168.232.43:3308) is down! Check MHA Manager logs at manager for details. Started manual(interactive) failover. The latest slave 192.168.232.42(192.168.232.42:3308) has all relay logs for recovery. Selected 192.168.232.42(192.168.232.42:3308) as a new master. 192.168.232.42(192.168.232.42:3308): OK: Applying all logs succeeded. 192.168.232.44(192.168.232.44:3308): This host has the latest relay log events. Generating relay diff files from the latest slave succeeded. 192.168.232.44(192.168.232.44:3308): OK: Applying all logs succeeded. Slave started, replicating from 192.168.232.42(192.168.232.42:3308) 192.168.232.42(192.168.232.42:3308): Resetting slave info succeeded. Master failover to 192.168.232.42(192.168.232.42:3308) completed successfully.
注:
* 要加上-ignore_last_failover参数,否则会报错
* 转移的过程中,有2次交互式的提示,第一次是让确认现在的主节点是否已经dead,第二次是确认是否要转移到某个节点。
(4)查看新主和slave节点
--1、node1节点上查看 mysql> show master status\G *************************** 1. row *************************** File: mysql-bin.000006 Position: 154 Binlog_Do_DB: customer Binlog_Ignore_DB: mysql,information_schema,performance_schema,sys Executed_Gtid_Set: 1 row in set (0.00 sec) mysql> show slave hosts; +-----------+------+------+-----------+--------------------------------------+ | Server_id | Host | Port | Master_id | Slave_UUID | +-----------+------+------+-----------+--------------------------------------+ | 3 | | 3308 | 1 | 0b8c9b28-3143-11eb-b7bf-000c2927b3e8 | +-----------+------+------+-----------+--------------------------------------+ 1 row in set (0.00 sec) --2、node3节点上查看 mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.232.42 Master_User: repl_user1 Master_Port: 3308 Connect_Retry: 60 Master_Log_File: mysql-bin.000006 Read_Master_Log_Pos: 154 Relay_Log_File: relay-log.000002 Relay_Log_Pos: 320 Relay_Master_Log_File: mysql-bin.000006 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: customer Replicate_Ignore_DB: mysql,information_schema,performance_schema,sys
注:通过主从的状态发现已经手动故障成功,新的主变成了node1,有一个slave节点是node3。
3、手动在线灾备切换(主库正常)
注:通过第二步的切换,现在主节点已经变成了node1,同样的方式把node2重新添加到现在的主从复制中。
(1)查看mha监控的状态(mha要是stopped状态)
[root@manager mha]# masterha_check_status --conf=/etc/mha_master/mha.cnf
mha is stopped(2:NOT_RUNNING).
如果mha是running状态的话,切换会报错,如下:
Fri Dec 4 10:45:31 2020 - [info] Executing FLUSH NO_WRITE_TO_BINLOG TABLES. This may take long time.. Fri Dec 4 10:45:31 2020 - [info] ok. Fri Dec 4 10:45:31 2020 - [info] Checking MHA is not monitoring or doing failover.. Fri Dec 4 10:45:31 2020 - [error][/usr/share/perl5/vendor_perl/MHA/MasterRotate.pm, ln143] Getting advisory lock failed on the current master. MHA Monitor runs on the current master. Stop MHA Manager/Monitor and try again. Fri Dec 4 10:45:31 2020 - [error][/usr/share/perl5/vendor_perl/MHA/ManagerUtil.pm, ln177] Got ERROR: at /usr/bin/masterha_master_switch line 53.
(2)手动在线切换
[root@manager mha]# masterha_master_switch --conf=/etc/mha_master/mha.cnf --master_state=alive --new_master_host=192.168.232.43 --new_master_port=3308 --orig_master_is_new_slave --running_updates_limit=100 Fri Dec 4 10:50:57 2020 - [info] MHA::MasterRotate version 0.58. Fri Dec 4 10:50:57 2020 - [info] Starting online master switch.. Fri Dec 4 10:50:57 2020 - [info] Fri Dec 4 10:50:57 2020 - [info] * Phase 1: Configuration Check Phase.. Fri Dec 4 10:50:57 2020 - [info] Fri Dec 4 10:50:57 2020 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping. Fri Dec 4 10:50:57 2020 - [info] Reading application default configuration from /etc/mha_master/mha.cnf.. Fri Dec 4 10:50:57 2020 - [info] Reading server configuration from /etc/mha_master/mha.cnf.. Fri Dec 4 10:50:58 2020 - [info] GTID failover mode = 0 Fri Dec 4 10:50:58 2020 - [info] Current Alive Master: 192.168.232.42(192.168.232.42:3308) Fri Dec 4 10:50:58 2020 - [info] Alive Slaves: Fri Dec 4 10:50:58 2020 - [info] 192.168.232.43(192.168.232.43:3308) Version=5.7.22-log (oldest major version between slaves) log-bin:enabled Fri Dec 4 10:50:58 2020 - [info] Replicating from 192.168.232.42(192.168.232.42:3308) Fri Dec 4 10:50:58 2020 - [info] Primary candidate for the new Master (candidate_master is set) Fri Dec 4 10:50:58 2020 - [info] 192.168.232.44(192.168.232.44:3308) Version=5.7.22-log (oldest major version between slaves) log-bin:enabled Fri Dec 4 10:50:58 2020 - [info] Replicating from 192.168.232.42(192.168.232.42:3308) Fri Dec 4 10:50:58 2020 - [info] Primary candidate for the new Master (candidate_master is set) It is better to execute FLUSH NO_WRITE_TO_BINLOG TABLES on the master before switching. Is it ok to execute on 192.168.232.42(192.168.232.42:3308)? (YES/no): yes Fri Dec 4 10:51:00 2020 - [info] Executing FLUSH NO_WRITE_TO_BINLOG TABLES. This may take long time.. Fri Dec 4 10:51:00 2020 - [info] ok. Fri Dec 4 10:51:00 2020 - [info] Checking MHA is not monitoring or doing failover.. Fri Dec 4 10:51:00 2020 - [info] Checking replication health on 192.168.232.43.. Fri Dec 4 10:51:00 2020 - [info] ok. Fri Dec 4 10:51:00 2020 - [info] Checking replication health on 192.168.232.44.. Fri Dec 4 10:51:00 2020 - [info] ok. Fri Dec 4 10:51:00 2020 - [info] 192.168.232.43 can be new master. Fri Dec 4 10:51:00 2020 - [info] From: 192.168.232.42(192.168.232.42:3308) (current master) +--192.168.232.43(192.168.232.43:3308) +--192.168.232.44(192.168.232.44:3308) To: 192.168.232.43(192.168.232.43:3308) (new master) +--192.168.232.44(192.168.232.44:3308) +--192.168.232.42(192.168.232.42:3308) Starting master switch from 192.168.232.42(192.168.232.42:3308) to 192.168.232.43(192.168.232.43:3308)? (yes/NO): yes Fri Dec 4 10:51:08 2020 - [info] Checking whether 192.168.232.43(192.168.232.43:3308) is ok for the new master.. Fri Dec 4 10:51:08 2020 - [info] ok. Fri Dec 4 10:51:08 2020 - [info] 192.168.232.42(192.168.232.42:3308): SHOW SLAVE STATUS returned empty result. To check replication filtering rules, temporarily executing CHANGE MASTER to a dummy host. Fri Dec 4 10:51:08 2020 - [info] 192.168.232.42(192.168.232.42:3308): Resetting slave pointing to the dummy host. Fri Dec 4 10:51:08 2020 - [info] ** Phase 1: Configuration Check Phase completed. Fri Dec 4 10:51:08 2020 - [info] Fri Dec 4 10:51:08 2020 - [info] * Phase 2: Rejecting updates Phase.. Fri Dec 4 10:51:08 2020 - [info] master_ip_online_change_script is not defined. If you do not disable writes on the current master manually, applications keep writing on the current master. Is it ok to proceed? (yes/NO): yes Fri Dec 4 10:51:14 2020 - [info] Locking all tables on the orig master to reject updates from everybody (including root): Fri Dec 4 10:51:14 2020 - [info] Executing FLUSH TABLES WITH READ LOCK.. Fri Dec 4 10:51:14 2020 - [info] ok. Fri Dec 4 10:51:14 2020 - [info] Orig master binlog:pos is mysql-bin.000006:154. Fri Dec 4 10:51:14 2020 - [info] Waiting to execute all relay logs on 192.168.232.43(192.168.232.43:3308).. Fri Dec 4 10:51:14 2020 - [info] master_pos_wait(mysql-bin.000006:154) completed on 192.168.232.43(192.168.232.43:3308). Executed 0 events. Fri Dec 4 10:51:14 2020 - [info] done. Fri Dec 4 10:51:14 2020 - [info] Getting new master's binlog name and position.. Fri Dec 4 10:51:14 2020 - [info] mysql-bin.000007:154 Fri Dec 4 10:51:14 2020 - [info] All other slaves should start replication from here. Statement should be: CHANGE MASTER TO MASTER_HOST='192.168.232.43', MASTER_PORT=3308, MASTER_LOG_FILE='mysql-bin.000007', MASTER_LOG_POS=154, MASTER_USER='repl_user1', MASTER_PASSWORD='xxx'; Fri Dec 4 10:51:14 2020 - [info] Fri Dec 4 10:51:14 2020 - [info] * Switching slaves in parallel.. Fri Dec 4 10:51:14 2020 - [info] Fri Dec 4 10:51:14 2020 - [info] -- Slave switch on host 192.168.232.44(192.168.232.44:3308) started, pid: 5263 Fri Dec 4 10:51:14 2020 - [info] Fri Dec 4 10:51:15 2020 - [info] Log messages from 192.168.232.44 ... Fri Dec 4 10:51:15 2020 - [info] Fri Dec 4 10:51:14 2020 - [info] Waiting to execute all relay logs on 192.168.232.44(192.168.232.44:3308).. Fri Dec 4 10:51:14 2020 - [info] master_pos_wait(mysql-bin.000006:154) completed on 192.168.232.44(192.168.232.44:3308). Executed 0 events. Fri Dec 4 10:51:14 2020 - [info] done. Fri Dec 4 10:51:14 2020 - [info] Resetting slave 192.168.232.44(192.168.232.44:3308) and starting replication from the new master 192.168.232.43(192.168.232.43:3308).. Fri Dec 4 10:51:14 2020 - [info] Executed CHANGE MASTER. Fri Dec 4 10:51:14 2020 - [info] Slave started. Fri Dec 4 10:51:15 2020 - [info] End of log messages from 192.168.232.44 ... Fri Dec 4 10:51:15 2020 - [info] Fri Dec 4 10:51:15 2020 - [info] -- Slave switch on host 192.168.232.44(192.168.232.44:3308) succeeded. Fri Dec 4 10:51:15 2020 - [info] Unlocking all tables on the orig master: Fri Dec 4 10:51:15 2020 - [info] Executing UNLOCK TABLES.. Fri Dec 4 10:51:15 2020 - [info] ok. Fri Dec 4 10:51:15 2020 - [info] Starting orig master as a new slave.. Fri Dec 4 10:51:15 2020 - [info] Resetting slave 192.168.232.42(192.168.232.42:3308) and starting replication from the new master 192.168.232.43(192.168.232.43:3308).. Fri Dec 4 10:51:15 2020 - [info] Executed CHANGE MASTER. Fri Dec 4 10:51:15 2020 - [info] Slave started. Fri Dec 4 10:51:15 2020 - [info] All new slave servers switched successfully. Fri Dec 4 10:51:15 2020 - [info] Fri Dec 4 10:51:15 2020 - [info] * Phase 5: New master cleanup phase.. Fri Dec 4 10:51:15 2020 - [info] Fri Dec 4 10:51:15 2020 - [info] 192.168.232.43: Resetting slave info succeeded. Fri Dec 4 10:51:15 2020 - [info] Switching master to 192.168.232.43(192.168.232.43:3308) completed successfully.
(3)查看新主和slave节点
--1、查看主节点(node2)的状态 mysql> show master status\G *************************** 1. row *************************** File: mysql-bin.000007 Position: 154 Binlog_Do_DB: customer Binlog_Ignore_DB: mysql,information_schema,performance_schema,sys Executed_Gtid_Set: 1 row in set (0.00 sec) mysql> show slave hosts; +-----------+------+------+-----------+--------------------------------------+ | Server_id | Host | Port | Master_id | Slave_UUID | +-----------+------+------+-----------+--------------------------------------+ | 1 | | 3308 | 2 | 5eb9dc85-2d68-11eb-acf4-000c29cddf72 | | 3 | | 3308 | 2 | 0b8c9b28-3143-11eb-b7bf-000c2927b3e8 | +-----------+------+------+-----------+--------------------------------------+ 2 rows in set (0.00 sec) --2、查看slave1(node1)节点的状态 mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.232.43 Master_User: repl_user1 Master_Port: 3308 Connect_Retry: 60 Master_Log_File: mysql-bin.000007 Read_Master_Log_Pos: 154 Relay_Log_File: relay-log.000002 Relay_Log_Pos: 320 Relay_Master_Log_File: mysql-bin.000007 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: customer Replicate_Ignore_DB: mysql,information_schema,performance_schema,sys --3、查看slave2(node3)节点的状态 mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.232.43 Master_User: repl_user1 Master_Port: 3308 Connect_Retry: 60 Master_Log_File: mysql-bin.000007 Read_Master_Log_Pos: 154 Relay_Log_File: relay-log.000002 Relay_Log_Pos: 320 Relay_Master_Log_File: mysql-bin.000007 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: customer Replicate_Ignore_DB: mysql,information_schema,performance_schema,sys
在线转移成功!!!
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢!