mysql的GTID复制和多源复制

配置基于GTID的复制
--------------------------------------------
在参数文件/etc/my.cnf增加下面内容:
主库
master_info_repository=TABLE
relay_log_info_repository=TABLE
log-slave-updates=true
gtid-mode=on
enforce-gtid-consistency=true
sync-master-info=1
slave-parallel-workers=2
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
report-host=10.45.10.209
report-port=3306
server_id = 2091


从库除了上面的参数外,还要增加
relay-log = relay-log
relay-log-index = relay-log.index


配置GTID的slave
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'repl123';
flush privileges;
change master to master_host='10.45.10.209', master_user='repl',master_password='repl123',master_auto_position=1;

GTID复制的好处:
对运维人员来说应该是一件大喜的事情,在主从切换后,在传统的方式里,你需要找到binlog和POS点,然后change master to指向,
而不是很有经验的运维,往往会将其找错,造成主从同步复制报错,在mysql5.6里,你无须再知道binlog和POS点,
你只需要知道master的IP、端口,账号密码即可,因为同步复制是自动的,mysql通过内部机制GTID自动找点同步。

----------------------------------------
配置多源复制:
即多个主,复制到1个从库,所有db汇总到一个slave的实例
注意:
多源数据库不能有同名库,否则会导致多源复制失败


例如,在220的slave 3307实例上面配置多源复制,汇集3个主的数据
CHANGE MASTER TO MASTER_HOST='10.45.10.209', MASTER_USER='repl', MASTER_PORT=3307, MASTER_PASSWORD='repl123',MASTER_AUTO_POSITION=1 FOR CHANNEL 'master209-2';
CHANGE MASTER TO MASTER_HOST='10.45.10.218', MASTER_USER='repl', MASTER_PORT=3307, MASTER_PASSWORD='repl123',MASTER_AUTO_POSITION=1 FOR CHANNEL 'master218-2';
CHANGE MASTER TO MASTER_HOST='10.45.10.219', MASTER_USER='repl', MASTER_PORT=3307, MASTER_PASSWORD='repl123',MASTER_AUTO_POSITION=1 FOR CHANNEL 'master219-2';

常用管理命令:
mysql> select * from mysql.slave_master_info;

mysql> START SLAVE io_thread FOR CHANNEL 'master209-2';
mysql> START SLAVE FOR CHANNEL 'master209-2';

mysql> show SLAVE status FOR CHANNEL 'master209-2'G


多源复制的好处:
对于备份目的的主备架构,多个主可以备份到一台物理备机上,节约资源

原文地址:https://www.cnblogs.com/caibird2005/p/5181101.html