级联复制
实现级联复制
案例:三台主机实现级联复制(也即是也即是slave2复制slave1复制master)
需要在中间的slave1服务器启用以下配置 ,实现中间级联slave1能将master的二进制日志在本机进行数据库更新(slave只是复制master数据库数据到relaylog中其本身的二进制日志不发生变动,因此需要开启log_slave_updates 使二进制日志更新,这样slave2才能通过复制slave1的二进制日志实现级联复制)。
实验环境:
#在10.0.0.10充当master
#在10.0.0.20充当级联slave1
#在10.0.0.100充当级联slave2
一、用于master数据库授权于slave的账号已创建。
<slave1和slave2都处于同一网段因此都可用salve账号连接master数据库>
<对该账号进行replication slave 授权>
二、级联slave1 配置文件
[mysqld]
log-bin=/data/binary_logs/mysql-bin ###开启二进制日志
server_id=20
read_only=on
log_slave_updates=on #MySQL8.0默认开启,其它版本默认不开启(不管什么版本都建议加上)
#添加完后重启mysqld
三、级联slave1 进行完全备份,备份完将文件拷贝到slave2上(这是slave1已经与master连接的情况下,否则master先进行完全备份并拷贝到slave1连接后再完全备份拷贝到slave2)。
mysqldump -uroot -p'123456' -A -F -E -R --triggers --single-transaction --master-data=1 --default-character-set=utf8mb4 --hex-blob --flush-privileges >/data/all_`date +%F`.sql
scp /data/all_2021-06-20.sql 10.0.0.100:/data/
四、对拷贝到slave2的完全备份文件进行完善,然后确认slave账号是否能够登陆master或slave1数据库。
五、暂时关闭二进制日志功能还原后开启并启动复制功能。
set sql_log_bin=off;
source /data/all_2021-06-20.sql
set sql_log_bin=on;
start slave;
<查看复制、线程、连接、二进制日志状态>
1)复制状态:一切正常连接的是级联slave1、IO 和SQL线程正常打开、也无报错信息。
2)线程状态:17 18 分别为 IO 和SQL 线程 。
<在级联slave1这样可以看到开启了DUMP线程与slave2的IO线程连接>
3)在master数据库创建一个db1的数据库,查看slave2的日志变化,发现日志大小确实增加。
<创建前与创建后的比较>
遇到的坑:
1. 报错:Master command COM_REGISTER_SLAVE failed: Access denied for user 'slave'@'10.0.0.%' (using password: YES) (Errno: 1045)
解决方法:显示账号出错,发现是并没有成功给slave账号进行授权,重新授权后IO线程能够于master进行连接。
posted on 2021-06-20 11:24 1251618589 阅读(3) 评论(0) 编辑 收藏 举报