在MySQL多源复制架构中,一个从库可以创建多个命名的复制通道(channels),复制通道代表主库向从库传送事务数据的路径,每个复制通道有自己独立的IO线程,1个或多个SQL线程。
多源复制常用于多主多从复制的复杂架构,多源复制并不提供多主上数据写入冲突的检测,如果在多主上对同一条记录进行更新,将导致数据冲突,其中一个复制通道将因为数据冲突,复制中断。
搭建2主1从多源复制
1、环境准备
- 主库1:192.168.56.201
- 主库2:192.168.56.202
- 从库:192.168.56.203
- MySQL 版本:5.7.19
2、多源复制搭建步骤
(1)复制账号授权
在所有机器上启动MySQL,并给复制账号repl授权。
grant replication slave on *.* to 'repl'@'%' identified by '123456';
(2)搭建复制关系
搭建从库与主库1之间的复制,在从库执行:
change master to master_host='192.168.56.201',master_user='repl',master_password='123456',master_auto_position=1 for channel 'channel1';
搭建从库与主库2之间的复制,在从库执行:
change master to master_host='192.168.56.202',master_user='repl',master_password='123456',master_auto_position=1 for channel 'channel2';
(3)启动复制
启动所有通道复制:
start slave;
启动某个通道复制
start slave for channel 'channel1';
(4)查看复制信息
查看所有通道复制信息:
show slave status\G
查看某个通道复制信息:
show slave status for channel 'channel1'\G
(5)停止复制
停止复制:
stop slave;
停止某个通道复制:
stop slave for channel 'channel1';