ITPUX技术网

交流 . 资讯 . 分享
Make progress together!
Linux操作系统下Oracle11g R2 RAC 安装配置教程
Oracle数据库培训-备份恢复-性能优化-集群容灾
Oracle数据库DBA高级工程师培训视频

MySQL 5.7多源复制(Multi-Source Replication)

内容发布:luashin| 发布时间:2017-6-8 19:48:47
MySQL 5.7多源复制(Multi-Source Replication)

    MySQL5.7.6以后开始支持多源复制Multi-Source Replication,可以将多个主的库同步到一台slave上,从而增加从的利用率,出节省了机器,也可用于备份。
    首先设置master_info_repository和relay_log_info_repository两个参数,这存储同步信息的仓库,可以设置的值为'FILE'和'TABLE',
参数名                    设置值 存储位置
master_info_repository    FILE   master.info
master_info_repository    TABLE  MySQL.slave_master_info
relay_log_info_repository FILE   relay-log.info
relay_log_info_repository TABLE  mysql.slave_relay_log_info
这2个参数都是可以动态调整的,要开启多源复制功能,必须将上面2个参数设置成'TABLE'

动态调整命令为:
STOP SLAVE;     //如果主从复制正在进行,需要先停掉
SET GLOBAL master_info_repository = 'TABLE';
SET GLOBAL relay_log_info_repository = 'TABLE';

设置同步的源:我这里设置的3个源,
CHANGE MASTER TO MASTER_HOST='10.237.81.192',MASTER_USER='repl', MASTER_PORT=3306, MASTER_PASSWORD='repl4slave',MASTER_LOG_FILE='mysql-bin.000007', MASTER_LOG_POS=417 FOR CHANNEL 'master_3306';
CHANGE MASTER TO MASTER_HOST='10.237.81.192',MASTER_USER='repl', MASTER_PORT=3307, MASTER_PASSWORD='repl4slave',MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=9350223 FOR CHANNEL 'master_3307';
CHANGE MASTER TO MASTER_HOST='10.237.81.192',MASTER_USER='repl', MASTER_PORT=3308, MASTER_PASSWORD='repl4slave',MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=120 FOR CHANNEL 'master_3308';

设置完源后,启动复制
START SLAVE;               //启动所有线程所有通道的复制,常用
START SLAVE SQL_THREAD;    //启动所有通道的SQL_THREAD线程
START SLAVE IO_THREAD;     //启动所有通道的IO_THREAD线程
START SLAVE FOR CHANNEL 'master_3306';
START SLAVE SQL_THREAD FOR CHANNEL 'master_3306';
START SLAVE IO_THREAD FOR CHANNEL 'master_3306';
停止复制命令也START类似,把START换成STOP;

重置可以选择重置所有和重置单一通道:
RESET SLAVE;
RESET SLAVE FOR CHANNEL CHANNELNAME;

检查复制状态:
SHOW SLAVE STATUS\G

对于多源复制的几点说明:
1.使用多源复制要避免源库是有同名 的库,这样在复制时会发生错误
2.对于mysql库,建议使用REPLICATE_IGNORE_DB将其屏蔽掉,在MySQL5.7里,已经支持动态对这些参数的操作
CHANGE REPLICATION FILTER REPLICATE_IGNORE_DB = (mysql);
在主库上对mysql库进行操作时,需要加use mysql,否则不会进行过滤
3.对于REPLICATE_DO_DB也一样,在操作时需要use db,否则不会进行同步
4.对于主从复制中出错,不管是基于binlog_position还是GTID,和普通一对一复制解决思路一样,只是在启动复制的时候单独启动这一通道,等这一通道复制没问题后,再启动其它通道。例master_3307出错,本例是基于binlog_position:
STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
START SLAVE FOR CHANNEL 'master_3307';



上一篇:MySQL 5.7多源复制及并行复制功能
下一篇:MySQL 5.7多源复制详解
回复

使用道具 举报

1框架
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表