MySQL 多源复制(Mulit-Source Replication)
MySQL多源复制方案
查看复制源Master_2的同步状态:SHOW SLAVE STATUS FOR CHANNEL 'Master_2'\G
slave上my.cnf的msqld添加:slave-skip-errors = 1050,1051 。这一个非常重要,不然无法实现相同数据结构(同库名同表名)的多源复制。这点官方文档和网上的帖子上都没提到过。最好专门弄一台主机做ddl,作为master1和master2的master,master1和master2只有一台开启slave_log_update.
多master上的主键重复问题测试:多源复制自身没有主键重复处理机制。只能从架构和设计上解决。目前有2中方案:master主键(退化成非主键)+serverid等标识符组成联合主键;第二种是步长方案。
1、步长方案:
如果有2个主机2个实例,则:
主机1:
SET @@auto_increment_offset=1;#起始值
SET @@auto_increment_increment=2;#步长
主机2:
SET @@auto_increment_offset=2;#起始值
SET @@auto_increment_increment=2;
上述set方法,只是临时的,重启后 失效。要永久的就需要配置到my.cnf里面去:
多源复制方案总结说明:
一、场景1:
源库库名不同或者表名不同,并且同步之后的slave也是不同库名或者不同表名。那么用mysql5.7原生的多源复制就可以搞定,基本不会出现大的问题。
二、场景2:
源库的库名和表名以及数据结构都相同,并且同步之后的slave也具有相同的结构。那么原生的多源复制就无法直接搞定,要通过设计和架构来解决复制出现的多种问题。
主要是下面这些问题:
1、ddl冲突:
方法a:在所有源master前面再布一个总master专门做ddl(组成一主多从),源master只允许其中一台开启log_slave_updates。
方法b:暂时不管,ddl冲突的时候,手动跳过复制错误。这时候要重启slave ,会造成slave暂时不可用。
2、主键和唯一约束冲突:
a、自增主键:用步长方案。比如有3台源master实例,那么自增起始值分别为1、2、3,自增步长都为3。这里需要预留足够的扩节点空间,比如预计以后最多可能会有10台源master,那么自增起始值分别是1到10,自增步长为10。步长配置方法参考前面的说明。
b、业务主键:原始主键退化,用 原始主键+servieid(能唯一标识一个实例即可 ,最好用现成的业务字段)组成联合主键。slave查询的时候直接先用servieid过滤,过滤之后的数据集就是原始主键唯一的了。
c、唯一约束:也采用b方案。
场景2的架构图:
在上图架构的基础上,每台主机的具体配置方法,参考前面的 主从复制 配置说明。
配置SQL如下: 在备机执行
CHANGE MASTER TO MASTER_HOST= "127.0.0.1" , MASTER_PORT=18601, MASTER_USER= "root" , MASTER_PASSWORD= "cc.123" ,MASTER_LOG_FILE= 'mysql-bin.000002' ,MASTER_LOG_POS=853 FOR CHANNEL 'm_1' ; CHANGE MASTER TO MASTER_HOST= "127.0.0.1" , MASTER_PORT=18602, MASTER_USER= "root" , MASTER_PASSWORD= "cc.123" ,MASTER_LOG_FILE= 'mysql-bin.000002' ,MASTER_LOG_POS=505 FOR CHANNEL 'm_2' ; SHOW SLAVE STATUS START SLAVE FOR CHANNEL 'm_1' ; START SLAVE FOR CHANNEL 'm_2' ; |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2015-06-12 性能计数器