MySQL5.7多源主从复制
来源:互联网 发布:为linux开发界面难吗 编辑:程序博客网 时间:2024/04/27 16:02
MySQL5.7多源主从复制
MySQL在5.7.2上面添加了多源复制(Multi-Source)功能,意味着一个从库可以连
多个主库,从而同时进行同步,但是如果是同一个表的话,会存在主键和唯一索引冲突的风险,需要提前做好规划
MySQL多源复制的原理
个人认为MySQL能实现多源复制的关键有两点
1. MySQL5.7中的从库进行同步的SQL_THREAD,IO_THREAD可以并发执行,这使得使多数据源的binlog同时同步变为可能。
2. MySQL5.7中添加了channel(通道)来判别不同的数据源,这样slave可以非常简单的进行多数据源的配置与区分。
大概的多源复制过程
每个通道都是一个slave去拉去masters的连接,每个通道对应一个IO_THEAD,我们运行不同的“changemaster”命令, 对于每一个主服务器。我们需要用到“for channel”这个参数来提供通信链接的名字。
筛选复制数据源
配置栗子
slave 192.168.60.22:3306
master1 192.168.60.22:3307
master2 192.168.60.22:3308
主库授权:
grant all on *.*to rep@'%' identified by '123456';
从库:
配置多通道复制
#只需在原有的复制命令加 for channel ‘channel name’
change master tomaster_host='192.168.60.22',master_port=3307,master_user='rep',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=154for channel 'master1';
change master tomaster_host='192.168.60.22',master_port=3308,master_user='rep',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=154for channel 'master2';
GTID下进行配置多源复制
change master tomaster_host='192.168.60.22', MASTER_USER='rep', MASTER_PORT=3307,
MASTER_PASSWORD='123456',MASTER_AUTO_POSITION= 1 FOR CHANNEL 'master1';
相关通道命令
show slavestatus
show slavestatus for channel 'master1';
reset slave;
reset slave forchannel 'master1';
stop slave forchannel 'master1';
start slave forchannel 'master1';
复制实验
多源复制实验:
master1
create databasetest1;
master2
create databasetest2;
此时查看slave,发现test1和test2已经同步到slave
复制冲突实验
master1
create databasetest3;
master2
create databasetest3;
会报错!!!复制直接出错,所以,多源复制还是要进行差异化插入,如果相同数据进行操作,slave会直接出现复制异常,错误代码1007
异常解决:
stop slave;
set globalsql_slave_skip_counter=1;
使用上述参数后,只能单独开启通道,只执行startslave会报错
start slavefor channel 'master2';
start slavefor channel 'master1';
结论
MySQL5.7的多源复制,是在MySQL可以多线程同步后,依靠多线程所采取的复制模式,但是无法在master端对binlog进行筛选,所以相同操作的binlog进入slave后,slave因为无法应用而报错,在MySQL分表分库后,此模式的使用可以非常简单的merge各data shards.或者备份多个节点数据库的数据到单独的机器。
By DBTomato
- MySQL5.7多源主从复制
- mysql5.7主从复制
- MySQL5.7主从复制
- MYSQL5.7主从复制
- MySQL5.7主从复制
- MySql5.7配置主从复制
- mysql5.7配置主从复制
- mysql5.7主从复制配置
- CentOS6.7 下 Mysql5.7主从复制
- MySQL5.7基于mysqldump的主从复制
- MySQL5.7 Replication主从复制配置教程
- Centos7+Mysql5.7实现主从复制
- mysql5.7 linux主从复制配置
- MySQL5.7 Replication主从复制配置教程
- windows mysql5.7 安装+主从复制
- Linux运维:MySql5.7主从复制
- MySQL5.7主从复制配置,数据同步
- CentOS7搭建MySQL5.7主从复制
- eclipse的workspace中不显示svn状态图标的解决办法
- 合并果子(优先队列)
- 自定义图片点击, 上传文件
- C++11之多线程
- 查看签名证书名称和描述文件UUID
- MySQL5.7多源主从复制
- C++ typedef用法小结
- activiti的安装详解
- Atitit.excel导出 功能解决方案 php java C#.net版总集合.doc
- DES 算法的使用
- 资安业者揭露新网络间谍组织Strider,锁定俄国、中国、瑞典及比利时窃取...
- CodeIngniter form_open()
- 51NOD 1161 Partial Sums(数论)
- Condition接口