Code Bye

MySQL双向同步的问题2

假设ID是int类型;
服务器A的ID范围段为1~10000;
B的ID范围段为10001~20000;
做双向同步的时候,假如A有一条数据的ID是500,那同步到B上还是500;
假如B上有一条数据的ID是15000,那同步到A上还是15000;
问一下有没有什么好的实现方式呢;
解决方案

20

建议在应用上区分把,就按照你的逻辑,范围1放到A,范围2的放到B,这样也不至于主键冲突。

20

LZ你好,
假如这个ID不是auto_increment类型的话,那就只能在应用层通过程序来实现了
假如是auto_increment类型的话,可以通过配置自增长参数来实现:
在这里我们在表A,B上加入参数,以实现不同插入
A:my.cnf上加入参数
auto_increment_offset = 1
auto_increment_increment = 1
这样A的auto_increment字段产生的数值是:1, 2,3,4,从1 开始
B:my.cnf上加入参数
auto_increment_offset = 10001
auto_increment_increment = 21
这样B的auto_increment字段产生的数值是:10001,10002,10003从10001开始
本人还有一个疑问,为什么master-slave中的主机里面的数据表的ID范围不同,这让本人很不解

10

引用 5 楼 u012736409 的回复:
Quote: 引用 4 楼 congya001 的回复:

本人还有一个疑问,为什么master-slave中的主机里面的数据表的ID范围不同,这让本人很不解

嗯,先谢谢。
ID范围不同,本人觉得应该是领导考虑到同步时主键可能会有冲突的原因吧;

对,这个就是考虑了主键冲突的问题,否则要是两个主机都随便插入id,一定会重复的。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明MySQL双向同步的问题2