我们在 MYSQL高可用架构之MHA实战一 数据库主从配置(真实可用)
上已经完成数据库主从的配置,接下来我们就要做MHA配置
一:配置SSH免密登录
MHA集群中的各节点彼此之间均需要基于ssh互信通信,以实现远程控制及数据管理功能。简单 起见,可在Manager节点生成密钥对儿,并设置其可远程连接本地主机后, 将私钥文件及 authorized_keys文件复制给余下的所有节点即可。 四个服务器都需要执行如下脚本:
#生成公钥和私钥
ssh-keygen -t rsa
#将公钥复制到manager服务器的author-zed_keys文件中
ssh-copy-id -i /root/.ssh/id_rsa.pub root@manager
具体意思是:在/root/.ssh目录下,执行ssh-keygen -t rsa后,生成了两个文件:id_rsa.pub(公钥) 和 id_rsa(私 钥)。
没有执行ssh-keyygen-t rsa
执行ssh-keyygen-t rsa
私钥文件放在本地机器,并且要保密。公钥要复制一份放到远程服务器上面(复制操作就是第二 个命令)。
第二个命令,执行得结果是公钥复制到了 /root/.ssh/authorized_keys 文件中,改文件和公钥私钥 默认都是保存在 .ssh文件夹中。
1.1 manager 生成公私钥
在manager中(192.168.0.1)
首先执行:生成公钥和私钥
ssh-keygen -t rsa
接着:将公钥复制到manager服务器的author-zed_keys文件中
ssh-copy-id -i /root/.ssh/id_rsa.pub root@manager
执行返回的信息是:
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed:
"/root/.ssh/id_rsa.pub"
The authenticity of host 'manager (172.30.11.33)' can't be established.
ECDSA key fingerprint is SHA256:ET5KsaZKOQvsYxYxJk3AHp8yZryMMlZMw5mfFEAI6AA.
ECDSA key fingerprint is MD5:4c:3c:d4:0a:d5:5d:2d:9e:e4:1f:04:14:36:97:06:e9.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter
out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted
now it is to install the new keys
root@manager's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@manager'"
and check to make sure that only the key(s) you wanted were added.
其中root@manager’s password是系统密码
1.2 master,slave1,slave2生成公私钥
参照1.1
1.3 公钥汇总
在 manager 上面分别执行如下命令:
将公钥集合复制到其他三个服务器中,默认是复制追加到authorized_keys文件中的,可以执行一 个命令之后,查看manager服务器中该文件是否新增了公钥。
scp /root/.ssh/authorized_keys root@master:/root/.ssh/
scp /root/.ssh/authorized_keys root@slave1:/root/.ssh/
scp /root/.ssh/authorized_keys root@slave2:/root/.ssh/
结果如下:
[root@Server-0192aa31-7526-4b12-b2f7-86d147415b03 .ssh]# scp authorized_keys
root@master:~/.ssh/
root@master's password:
authorized_keys
100% 1654 588.2KB/s 00:00
[root@Server-0192aa31-7526-4b12-b2f7-86d147415b03 .ssh]# scp authorized_keys
root@salve1:~/.ssh/
ssh: Could not resolve hostname salve1: Name or service not known
lost connection
[root@Server-0192aa31-7526-4b12-b2f7-86d147415b03 .ssh]# scp authorized_keys
root@slave1:~/.ssh/
The authenticity of host 'slave1 (172.30.11.99)' can't be established.
ECDSA key fingerprint is SHA256:ET5KsaZKOQvsYxYxJk3AHp8yZryMMlZMw5mfFEAI6AA.
ECDSA key fingerprint is MD5:4c:3c:d4:0a:d5:5d:2d:9e:e4:1f:04:14:36:97:06:e9.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'slave1,172.30.11.99' (ECDSA) to the list of known
hosts.
root@slave1's password:
authorized_keys
100% 1654 697.1KB/s 00:00
[root@Server-0192aa31-7526-4b12-b2f7-86d147415b03 .ssh]# scp authorized_keys
root@slave2:~/.ssh/
The authenticity of host 'slave2 (172.30.11.240)' can't be established.
ECDSA key fingerprint is SHA256:dOyHFOpWdCfRY7ibGu08OZRvcNk9F6Kq1F4I8brK0HM.
ECDSA key fingerprint is MD5:0a:ac:fa:96:6d:6b:62:95:c0:81:2b:1b:84:c3:fb:6a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'slave2,172.30.11.240' (ECDSA) to the list of known
hosts.
root@slave2's password:
authorized_keys
100% 1654 2.4MB/s 00:00
[root@Server-0192aa31-7526-4b12-b2f7-86d147415b03 .ssh]#
root@master’s password:
root@slave1’s password:
root@slave2’s password:
是系统密码
1.4 验证SSH连通性
验证一下:看看是否还需要输入密码才可以登录其他服务器,找个文件复制来复制去。
#在master 上面执行
[root@master mha]# cd test/
[root@whb2021test test]# scp -r root@192.168.0.3(从db):/mnt/dgcsb/public/nginx ./
access_json.tar.gz
100% 13MB 45.6MB/s 00:00
access_json.log
100% 800MB 46.1MB/s 00:17
error.log
100% 50MB 54.7MB/s 00:00
nginx.pid
100% 6 2.5KB/s 00:00
access_json.log
67% 1598MB 132.3MB/s 00:05 ETA^CKilled by signal 2.
可以看到scp 无需输入密码了。 在三个数据库服务器上面执行
两个服务器第一次互相访问的时候,会出现一个需要输入 “yes”的操作,后续就不会有了,所以 需要全部执行下。
二:MHA安装
mha 版本:0.58.0
四个节点都需安装: mha4mysql-node-0.58-0.el7.centos.noarch.rpm
Manager 节点另需要安装: mha4mysql-manager-0.58-0.el7.centos.noarch.rpm
下载地址:数据库+mha+mha+数据库高可用
执行语句如下:
yum install -y mha4mysql-node-0.58-0.el7.centos.noarch.rpm
yum install -y mha4mysql-manager-0.58-0.el7.centos.noarch.rpm
上传压缩包在统一位置 : mkdir /mha/mha4mysql
manager 执行上面两个指令,其他服务器只需要执行第一个node的指令即可(manager服务器也 需要安装mha的node安装包)。
manager 192.168.0.1 服务器上面执行如下:
yum install -y mha4mysql-node-0.58-0.el7.centos.noarch.rpm
yum install -y mha4mysql-manager-0.58-0.el7.centos.noarch.rpm
依次在 master slave1 slave2服务器上面执行命令
yum install -y mha4mysql-node-0.58-0.el7.centos.noarch.rpm
2.1 mha 配置文件设置
2.1.1 文件配置
manager 服务器 上
mkdir /etc/mha_master
vim /etc/mha_master/mha.cnf
的 /etc/mha/mha.cnf文件
[server default]
user=mharoot
password=123456
manager_workdir=/etc/mha_master/app1
manager_log=/etc/mha_master/manager.log
master_binlog_dir=/mha/mysql/public/mysql/data
client_bindir=/mha/mysql/public/mysql/bin
client_libdir=/mha/mysql/public/mysql/lib
remote_workdir=/mnt/mhadata
ssh_user=root
repl_user=slave
repl_password=123456
ping_interval=1
[server1]
hostname=192.168.0.2
ssh_port=22
port=3307
[server2]
hostname=192.168.0.3
ssh_port=22
port=3307
candidate_master=1
check_repl_delay=0
[server3]
hostname=192.168.0.4
ssh_port=22
port=3307
由于参数说明比较多,我们总结了一些常用的。
manager_workdir=/var/log/masterha/app1.log //设置manager的工作目录
manager_log=/var/log/masterha/app1/manager.log //设置manager的日志
master_binlog_dir=/data/mysql //设置master 保存binlog的位置,以便MHA可以找到master的日志,我这里的也就是mysql的数据目录
master_ip_failover_script= /usr/local/bin/master_ip_failover //设置自动failover时候的切换脚本
master_ip_online_change_script= /usr/local/bin/master_ip_online_change //设置手动切换时候的切换脚本
password=123456 //设置mysql中root用户的密码,这个密码是前文中创建监控用户的那个密码
user=root 设置监控用户root
ping_interval=1 //设置监控主库,发送ping包的时间间隔,默认是3秒,尝试三次没有回应的时候自动进行railover
remote_workdir=/tmp //设置远端mysql在发生切换时binlog的保存位置
repl_password=123456 //设置复制用户的密码
repl_user=repl //设置复制环境中的复制用户名
report_script=/usr/local/send_report //设置发生切换后发送的报警的脚本
secondary_check_script= /usr/local/bin/masterha_secondary_check -s server03 -s server02
shutdown_script="" //设置故障发生后关闭故障主机脚本(该脚本的主要作用是关闭主机放在发生脑裂,这里没有使用)
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
user=mharoot 是需要在数据库中重新创建一个账号给mha使用。
三个数据库都新建一个mha管理账户,授权 后续会用到,
./mysql -h 127.0.0.1 -P 3307 -u root -p\123456
select host,user from mysql.user;
grant all on *.* to mharoot@'%' identified by '123456';
flush privileges;
select host,user from mysql.user;
2.1.2各节点SSH通信检测
检测各节点间 ssh 互信通信配置是否 ok,我们在 Manager 机器上输入下述命令来检测:
masterha_check_ssh -conf=/etc/mha_master/mha.cnf
ssh通的结果如下
Wed Sep 7 17:43:18 2022 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Wed Sep 7 17:43:18 2022 - [info] Reading application default configuration from /etc/mha_master/mha.cnf..
Wed Sep 7 17:43:18 2022 - [info] Reading server configuration from /etc/mha_master/mha.cnf..
Wed Sep 7 17:43:18 2022 - [info] Starting SSH connection tests..
Wed Sep 7 17:43:19 2022 - [debug]
Wed Sep 7 17:43:18 2022 - [debug] Connecting via SSH from root@主db(192.168.0.2)(主db(192.168.0.2):22) to root@从db(192.168.0.3)(从db(192.168.0.3):22)..
Wed Sep 7 17:43:18 2022 - [debug] ok.
Wed Sep 7 17:43:18 2022 - [debug] Connecting via SSH from root@主db(192.168.0.2)(主db(192.168.0.2):22) to root@从db2(192.168.0.4)(从db2(192.168.0.4):22)..
Wed Sep 7 17:43:18 2022 - [debug] ok.
Wed Sep 7 17:43:19 2022 - [debug]
Wed Sep 7 17:43:18 2022 - [debug] Connecting via SSH from root@从db(192.168.0.3)(从db(192.168.0.3):22) to root@主db(192.168.0.2)(主db(192.168.0.2):22)..
Wed Sep 7 17:43:18 2022 - [debug] ok.
Wed Sep 7 17:43:18 2022 - [debug] Connecting via SSH from root@从db(192.168.0.3)(从db(192.168.0.3):22) to root@从db2(192.168.0.4)(从db2(192.168.0.4):22)..
Wed Sep 7 17:43:19 2022 - [debug] ok.
Wed Sep 7 17:43:20 2022 - [debug]
Wed Sep 7 17:43:19 2022 - [debug] Connecting via SSH from root@从db2(192.168.0.4)(从db2(192.168.0.4):22) to root@主db(192.168.0.2)(主db(192.168.0.2):22)..
Wed Sep 7 17:43:19 2022 - [debug] ok.
Wed Sep 7 17:43:19 2022 - [debug] Connecting via SSH from root@从db2(192.168.0.4)(从db2(192.168.0.4):22) to root@从db(192.168.0.3)(从db(192.168.0.3):22)..
Wed Sep 7 17:43:19 2022 - [debug] ok.
Wed Sep 7 17:43:20 2022 - [info] All SSH connection tests passed successfully.
ssh测试成功。
2.1.3Mysql复制集群连接配置检测
检查管理的MySQL复制集群的连接配置参数是否OK,manager服务器上执行命令
masterha_check_repl -conf=/etc/mha_master/mha.cnf
但是这个时候会出现一些问题。
比如会出现下面问题:
Checking if super_read_only is defined and turned on..install_driver(mysql)
failed: Can't load '/usr/lib64/perl5/vendor_perl/auto/DBD/mysql/mysql.so' for
module DBD::mysql: libmysqlclient.so.18: cannot open shared obj
原因: 具体的错误已经在报错中提示,缺少相应的组件包:libmysqlclient.so.18: cannot open shared object file: No such file or directory at /usr/lib64/perl5/DynaLoader.pm line 190
也就是需要有libmysqlclient.so.18
下载地址是:
在master ,slave1 ,slave2上都要执行如下操作
1:把libmysqlclient.so.18放在/usr/lib/和/usr/lib64/下
记得要授权:
chmod -R 777 libmysqlclient.so.18
2:软链接
ln -s /mha/mysql/install/public/mysql/lib/libmysqlclient.so.20 /usr/lib/
ln -s /mha/mysql/install/public/mysql/lib/libmysqlclient.so /usr/lib64/
ln -s /mha/mysql/install/public/mysql/lib/libmysqlclient.so.20 /usr/lib64/
3:接着需要安装一个
ls -al /usr/lib64/perl5/vendor_perl/auto/DBD/mysql/mysql.so
yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-ParallelForkManager perl-CPAN -y
updatedb
在重新执行
masterha_check_repl -conf=/etc/mha_master/mha.cnf
成功结果如下:
Wed Sep 7 18:04:09 2022 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Wed Sep 7 18:04:09 2022 - [info] Reading application default configuration from /etc/mha_master/mha.cnf..
Wed Sep 7 18:04:09 2022 - [info] Reading server configuration from /etc/mha_master/mha.cnf..
Wed Sep 7 18:04:09 2022 - [info] MHA::MasterMonitor version 0.58.
Wed Sep 7 18:04:10 2022 - [info] GTID failover mode = 0
Wed Sep 7 18:04:10 2022 - [info] Dead Servers:
Wed Sep 7 18:04:10 2022 - [info] Alive Servers:
Wed Sep 7 18:04:10 2022 - [info] 主db(192.168.0.2)(主db(192.168.0.2):3307)
Wed Sep 7 18:04:10 2022 - [info] 从db(192.168.0.3)(从db(192.168.0.3):3307)
Wed Sep 7 18:04:10 2022 - [info] 从db2(192.168.0.4)(从db2(192.168.0.4):3307)
Wed Sep 7 18:04:10 2022 - [info] Alive Slaves:
Wed Sep 7 18:04:10 2022 - [info] 从db(192.168.0.3)(从db(192.168.0.3):3307) Version=5.7.23-log (oldest major version between slaves) log-bin:enabled
Wed Sep 7 18:04:10 2022 - [info] Replicating from 主db(192.168.0.2)(主db(192.168.0.2):3307)
Wed Sep 7 18:04:10 2022 - [info] Primary candidate for the new Master (candidate_master is set)
Wed Sep 7 18:04:10 2022 - [info] 从db2(192.168.0.4)(从db2(192.168.0.4):3307) Version=5.7.23-log (oldest major version between slaves) log-bin:enabled
Wed Sep 7 18:04:10 2022 - [info] Replicating from 主db(192.168.0.2)(主db(192.168.0.2):3307)
Wed Sep 7 18:04:10 2022 - [info] Current Alive Master: 主db(192.168.0.2)(主db(192.168.0.2):3307)
Wed Sep 7 18:04:10 2022 - [info] Checking slave configurations..
Wed Sep 7 18:04:10 2022 - [info] Checking replication filtering settings..
Wed Sep 7 18:04:10 2022 - [info] binlog_do_db= , binlog_ignore_db=
Wed Sep 7 18:04:10 2022 - [info] Replication filtering check ok.
Wed Sep 7 18:04:10 2022 - [info] GTID (with auto-pos) is not supported
Wed Sep 7 18:04:10 2022 - [info] Starting SSH connection tests..
Wed Sep 7 18:04:13 2022 - [info] All SSH connection tests passed successfully.
Wed Sep 7 18:04:13 2022 - [info] Checking MHA Node version..
Wed Sep 7 18:04:13 2022 - [info] Version check ok.
Wed Sep 7 18:04:13 2022 - [info] Checking SSH publickey authentication settings on the current master..
Wed Sep 7 18:04:13 2022 - [info] HealthCheck: SSH to 主db(192.168.0.2) is reachable.
Wed Sep 7 18:04:14 2022 - [info] Master MHA Node version is 0.58.
Wed Sep 7 18:04:14 2022 - [info] Checking recovery script configurations on 主db(192.168.0.2)(主db(192.168.0.2):3307)..
Wed Sep 7 18:04:14 2022 - [info] Executing command: save_binary_logs --command=test --start_pos=4 --binlog_dir=/mha/mysql/public/mysql/data --output_file=/mnt/mhadata/save_binary_logs_test --manager_version=0.58 --start_file=mysql-bin.000004
Wed Sep 7 18:04:14 2022 - [info] Connecting to root@主db(192.168.0.2)(主db(192.168.0.2):22)..
Creating /mnt/mhadata if not exists.. ok.
Checking output directory is accessible or not..
ok.
Binlog found at /mha/mysql/public/mysql/data, up to mysql-bin.000004
Wed Sep 7 18:04:14 2022 - [info] Binlog setting check done.
Wed Sep 7 18:04:14 2022 - [info] Checking SSH publickey authentication and checking recovery script configurations on all alive slave servers..
Wed Sep 7 18:04:14 2022 - [info] Executing command : apply_diff_relay_logs --command=test --slave_user='mharoot' --slave_host=从db(192.168.0.3) --slave_ip=从db(192.168.0.3) --slave_port=3307 --workdir=/mnt/mhadata --target_version=5.7.23-log --manager_version=0.58 --client_bindir=/mha/mysql/public/mysql/bin --client_libdir=/mha/mysql/public/mysql/lib --relay_log_info=/mha/mysql/public/mysql/data/relay-log.info --relay_dir=/mha/mysql/public/mysql/data/ --slave_pass=xxx
Wed Sep 7 18:04:14 2022 - [info] Connecting to root@从db(192.168.0.3)(从db(192.168.0.3):22)..
Checking slave recovery environment settings..
Opening /mha/mysql/public/mysql/data/relay-log.info ... ok.
Relay log found at /mha/mysql/public/mysql/data, up to relay-log.000002
Temporary relay log file is /mha/mysql/public/mysql/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 Sep 7 18:04:14 2022 - [info] Executing command : apply_diff_relay_logs --command=test --slave_user='mharoot' --slave_host=从db2(192.168.0.4) --slave_ip=从db2(192.168.0.4) --slave_port=3307 --workdir=/mnt/mhadata --target_version=5.7.23-log --manager_version=0.58 --client_bindir=/mha/mysql/public/mysql/bin --client_libdir=/mha/mysql/public/mysql/lib --relay_log_info=/mha/mysql/public/mysql/data/relay-log.info --relay_dir=/mha/mysql/public/mysql/data/ --slave_pass=xxx
Wed Sep 7 18:04:14 2022 - [info] Connecting to root@从db2(192.168.0.4)(从db2(192.168.0.4):22)..
Checking slave recovery environment settings..
Opening /mha/mysql/public/mysql/data/relay-log.info ... ok.
Relay log found at /mha/mysql/public/mysql/data, up to relay-log.000002
Temporary relay log file is /mha/mysql/public/mysql/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 Sep 7 18:04:14 2022 - [info] Slaves settings check done.
Wed Sep 7 18:04:14 2022 - [info]
主db(192.168.0.2)(主db(192.168.0.2):3307) (current master)
+--从db(192.168.0.3)(从db(192.168.0.3):3307)
+--从db2(192.168.0.4)(从db2(192.168.0.4):3307)
Wed Sep 7 18:04:14 2022 - [info] Checking replication health on 从db(192.168.0.3)..
Wed Sep 7 18:04:14 2022 - [info] ok.
Wed Sep 7 18:04:14 2022 - [info] Checking replication health on 从db2(192.168.0.4)..
Wed Sep 7 18:04:14 2022 - [info] ok.
Wed Sep 7 18:04:14 2022 - [warning] master_ip_failover_script is not defined.
Wed Sep 7 18:04:14 2022 - [warning] shutdown_script is not defined.
Wed Sep 7 18:04:14 2022 - [info] Got exit code 0 (Not master dead).
MySQL Replication Health is OK.
2.1.4 启动mha
在manager中执行查询mha状态
masterha_check_status -conf=/etc/mha_master/mha.cnf
结果是:
mha is stopped(2:NOT_RUNNING).
说明mha是没有启动的。
这个时候我们就要启动mha
nohup masterha_manager -conf=/etc/mha_master/mha.cnf > /etc/mha_master/manager.log 2>&1 &
再查询启动状态。则变成了
mha (pid:21600) is running(0:PING_OK), master:192.168.0.2
这样mha就搭建好了。
2.2 验证MHA
2.2.1:验证主从同步
1:在 master db(192.168.0.2)中表中添加一条数据,
2 :在slave1 和slave2 中就能看到数据同步过来了。
2.2.2:关闭master 数据,验证主从迁移了。
master db 中kill -9 数据库
接下来在slave1和slave2中执行如下代码
cd /mha/mysql/install/public/mysql/bin
./mysql -h 127.0.0.1 -P 3307 -u root -p\123456
show slave status\G
我们会看到某个slave1或者slave2中某个从节点变成了主节点(比如从节点slave1 也就是db2变成主节点了)。
Slave_IO_State: Waiting for master to send event
Master_Host: db2(192.168.0.3)
Master_User: slave
Master_Port: 3307
Connect_Retry: 60
Master_Log_File: master-log.000003
Read_Master_Log_Pos: 1367
Relay_Log_File: relay-log.000002
Relay_Log_Pos: 321
Relay_Master_Log_File: master-log.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
.....................
然后在变成主节点得从节点中新增数据,看另外一个数据库是否添加了。如果添加了,就说明成功了。
故障转移完成后, manager将会自动停止此时使用 masterha_check_status 命令检测将会遇到 错误提示,执行如下:
masterha_check_status -conf=/etc/mha_master/mha.cnf
返回信息就是:
mha is stopped(2:NOT_RUNNING).
2.2.3恢复故障节点
原本的 slave1 已经成为了新的主节点,所以,我们对其进行完全备份,而后把备份的数据发送 到我们新添加的机器上:
首先在新主节点slave1备份下数据
[root@mysql bin]# ./mysqldump -h 127.0.0.1 -P 3307 -uroot -p --all-databases >
/mha/mysql/backup/slave1-myql-all.sql
#后续会要求你输入密码 ,Enter password:
Enter password:
[root@mysql bin]# cd /mha/mysql/backup/
[root@mysql backup]# ls -l
total 788
-rw-r--r-- 1 root root 804072 Sep 9 09:46 slave1-myql-all.sql
将slave1(现在的master)数据库备份文件复制到 之前的master中的相同文件夹中
在原来的master中执行如下:
cd /mha/mysql/backup
scp -r root@slave1:/mha/mysql/backup/slave1-myql-all.sql ./
启动 master节点 ,之后会作为从节点使用
启动后导入备份数据,代码如下
cd /mha/mysql/install/public/mysql/bin
./mysql -h 127.0.0.1 -P 3307 -u root -p\123456 </mha/mysql/backup/slave1-myql-all.sql
返回的信息是这样
mysql: [Warning] Using a password on the command line interface can be insecure.
这样数据就同步到原来的master上了。
接下来就要重新设置原来的master为从节点。
在新主节点中(slave1)查看最新数据日志
show master STATUS
发现现在变成了。
日志文件 master-log.000003 列为:1624
则在老master 中执行如下代码
cd /mha/mysql/install/public/mysql/bin
change master to master_host='db1(新master)',master_port=3307,master_user='slave',master_password='123456',master_log_file='master-log.000003',master_log_pos=1624;
start slave;
show slave status\G
发现老master变成了新节点了。
Slave_IO_State: Waiting for master to send event
Master_Host: 新master(slave1)
Master_User: slave
Master_Port: 3309
Connect_Retry: 60
Master_Log_File: master-log.000003
Read_Master_Log_Pos: 1624
Relay_Log_File: mysql-relay-bin.000002
Relay_Log_Pos: 321
Relay_Master_Log_File: master-log.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
这样完全验证了mha主从高可用了。
参考:实验 详解MHA搭建过程中的遇到的各种问题