阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

102次阅读
没有评论

共计 1981 个字符,预计需要花费 5 分钟才能阅读完成。

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’;

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-12/13817.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计1981字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中