• ADADADADAD

    主主复制时的主键冲突解决[ mysql数据库 ]

    mysql数据库 时间:2024-12-25 09:54:58

    作者:文/会员上传

    简介:

    主主复制下一定要注意避免的问题---------同步冲突例:create table stu (id int primary key auto_increment.)......2台mysql地位相等, 假如2个请求同时到达2台服务器,请

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    主主复制下一定要注意避免的问题---------同步冲突

    例:

    create table stu (

    id int primary key auto_increment.

    )......

    2台mysql地位相等, 假如2个请求同时到达2台服务器,

    请求的A节点,  stu 的id为1

    请求的B 节点,  stu的id为1 ,

    同步--->冲突

     

    如何解决?

    让1台服务器  1,3,5,7来增长

    另1台服务器  2,4,6,8来增长

    一台服务器:

    set global auto_increment_increment = 2;

    set global auto_increment_offset = 1;

    set session auto_increment_increment = 2;

    set session auto_increment_offset = 1;

     

    另一台服务器:

    set global auto_increment_increment = 2;

    set global auto_increment_offset = 2;

    set session auto_increment_increment=2;

    set session auto_increment_offset = 2;

    注:auto-increment-increment 和 auto-increment-offset 要写到配置文件 中,防止下次重启后失效.


    操作后得到如下类似效果

     

    如果后期需要加服务器,这个办法就有限制了.

    我们可以在业务逻辑上来解决,

    比如在oracle 有sequnce序列.

    序列每次访问,生成递增/递减的数据.

     

    以redis为例, 我们可以专门构建一个 global:userid

    每次PHP插入Mysql前,先 incr->global:userid, 得到一个不重复的userid.

    主主复制时的主键冲突解决.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载