一主多从

目的:在原有的一主一从的情况下增加多一个slave。
思路:将master数据库完全备份并开启 --master-data=1 (主从复制功能),对完全备份文件的 change master to 进行完善(可通过 help master to 获取master信息模板),完善后在关闭二进制日志功能的情况下进行还原完全备份,还原完后开启二进制日志功能以及 start slave 进行主从复制,新slave就会根据完全备份文件提供的二进制日志结束位置标记往后进行复制。
概述:master数据库授权于slave复制master数据库数据的账号已创建为 slave2
一、新slave节点配置:
1).开启二进制日志功能
2).设置节点ID号(一般为IP主机号且不可与master的ID号相同)
3).将该节点的数据库设置为只读
4).修改完后重启mysqld

[mysqld]
log-bin=/data/binary_logs/mysql-bin
server_id=20
read_only=on

二、master进行完全备份并开启 --master-data=1 (主从复制功能)

mysqldump -uroot -p'123456' -A -F -E -R --triggers --single-transaction --master-data=1 --default-character-set=utf8 --hex-blob --flush-privileges >/data/all_`date +%F`.sql

 

三、将完全备份文件拷贝到新slave

scp /data/all_2021-06-19.sql 10.0.0.20:/data/

 

 

四、对完全备份的 change master to 进行完善(可通过 help change master to; 获取模板)
<完善前>

 

 

<完善后>

 

 、暂时关闭二进制日志功能后进行还原备份操作。

set sql_log_bin=off;
source /data/all_2021-06-19.sql
set sql_log_bin=on;

 

 

 

 

 

 

 

 

六、开启slave、查看线程、查看连接状态是否能够实现一主二从同步
<线程状态>

 

 

 

 

 

 <查看连接状态>

<查看是否能够实现主从复制>
10.0.0.10 为master

10.0.0.100 为slave 100

10.0.0.20 为slave2

 

 

 遇到的坑:

还原备份文件后 start slave 发现 IO线程无法开启,无法与master数据库连接。
解决方案:1)排除是否是网络问题2)检查由master数据库创建授权给slave登录的账号是否能够用于本节点登录,如果不能用于本节点登录master重新创建账号并授权或者(建议master创建账号时主机位为%通配符,这样同一网段的slave都能够使用此账号登录master数据库),创建新账号后再执行第 二、三、四、五 项。<不然不检测账号的可用性就直接实验就会出现 IO线程无法开启并连接 slave无法和master连接的情况,就要执行以下操作>
1)stop slave;
2)reset slave all;  ###清空完全备份文件中完善的master信息表。







 

posted on 2021-06-20 01:11  1251618589  阅读(7)  评论(0编辑  收藏  举报

导航