在复制时,可以有多个Master。这些Master不进行冲突检查拓扑到Slave。在使用多源复制时对Slave的表存储格式是有要求的,必须要基于table存储而非文件存储【require table based repositories,not file based repositories】。所以可以在Slave启动时设置或设置在配置文件中:
1.修改:
master_info_repository='TABLE';
relay_log_info_repository='TABLE';
默认是基于File的。
2.配置:
【基于GTID】确保每个Master开启GTID,使用CHANGE MASTER TO 为每一个挂载到Slave上的Master上指定Channel。
如:
CHANGE MASTER TO MASTER_HOST='master1', MASTER_USER='rpl', MASTER_PORT=3451, MASTER_PASSWORD='',MASTER_AUTO_POSITION = 1 FOR CHANNEL 'master-1';
【基于BinLog】
CHANGE MASTER TO MASTER_HOST='master1', MASTER_USER='rpl', MASTER_PORT=3451, MASTER_PASSWORD=''
MASTER_LOG_FILE='master1-bin.000006', MASTER_LOG_POS=628 FOR CHANNEL 'master-1';【需确定MASTER_LOG_FILE 和MASTER_LOG_POS】
3.启动Slave:
使用 start slave thread_types启动复制。可以在Slave上启动多个Channel,也可以启动一个指定的Channel。
start slave [thread_types];
start slave [thread_types] for CHANNEL channel;
4.关闭Slave:
stop slave [thread_types]; 终止当前的所有Channels。
stop slave [thread_types] for CHANNEL channel;
Note:thread_types是为Slave线程指定一个Name。
5.重置Multi-Source Replication slaves:
reset slave [for CHANNEL channel];可针对所有的也可重置指定的channel.
reset slave会清除BinLog中的位置,意味着有一个clean start:清除Master.info,relay-log并开启一个新的relay log.[在执行前先stop]
6 监控:
a.查看指定在channel上的状态,如 show slave status for CHANNEL chnanel_name.默认查看所有。
b.使用performance schema中的表监控channels.与Replication相关的表有如下这些:
b-1 监控Channel的连接状态:select * from replication_connection_status;