Replication基础(五) 多源复制以及管理操作
简介
多源复制是指一个从实例指向多个主实例,相当于把多个MySQL实例的数据汇聚到一个实例上面,这是MySQL 5.7版本开始支持的新的复制功能。
搭建步骤
MySQL5.7版本中增加了多源复制的功能,其中每一个复制关系,叫做一个复制通道,channel,这点从执行change master命令的时候可以看出来,如下:
mysql> change master to
-> master_host='127.0.0.1',
-> master_port=13307,
-> master_user='rpl',
-> master_password='rpl',
-> master_auto_position=1
-> for channel 'master_13307';
在5.6版本中,是不支持for channel
的语法的。如果想同时复制另外一个实例的数据,则添加另外一条通道使用相同的命令,只需要更改主库的信息如下:
mysql> change master to
-> master_host='127.0.0.1', //主库ip地址
-> master_port=13309, //主库端口
-> master_user='rpl', //主库提供用于建立复制关系的账号
-> master_password='rpl', //账号的密码
-> master_auto_position=1 //使用GTID协议
-> for channel 'master_13309';//channel名称
通道名称必须不一样。
添加通道
对一个已经存在的多源复制的从实例来说,无论之前的通道采用binlog+pos的方式,还是基于GTID的方式,都可以继续添加新的通道如果使用GTID的方式来进行复制,会有些麻烦。其操作步骤如下:
- 数据备份,通过mysqldump/mysqlpump/mydumper等工具对数据进行导出操作,导出命令类似如下
mysqldump --single-transaction --master-data=2
- 停止复制
- 记录slave当前所有的gtid_executed
- slave执行reset master
- 数据倒入
- slave执行reset master
- slave 执行set global gtid_purged=”;此处设置的值应该是之前所有的gtid_executed+本次数据导出时备份文件中包含的gtid_executed值
- slave执行change master to ** for channel ‘‘;
- slave start slave 查看复制状态