mysql 双向同步的键值冲突问题的解决方法分享

 更新时间:2011年09月26日 14:31:09   作者:  
多主互备和主从复制有一些区别,因为多主中都可以对服务器有写权限,所以设计到自增长重复问题
出现的问题(多主自增长ID重复)
1:首先我们通过A,B的test表结构
2:掉A,在B上对数据表test(存在自增长ID)执行插入操作,返回插入ID为1
3:后停掉B,在A上对数据表test(存在自增长ID)执行插入操作,返回的插入ID也是1
4:然后 我们同时启动A,B,就会出现主键ID重复

解决方法:
我们只要保证两台服务器上插入的自增长数据不同就可以了
如:A查奇数ID,B插偶数ID,当然如果服务器多的话,你可以定义算法,只要不同就可以了

在这里我们在A,B上加入参数,以实现奇偶插入

A:my.cnf上加入参数

auto_increment_offset = 1
auto_increment_increment = 2
这样A的auto_increment字段产生的数值是:1, 3, 5, 7, …等奇数ID了

B:my.cnf上加入参数

auto_increment_offset = 2
auto_increment_increment = 2
这样B的auto_increment字段产生的数值是:2, 4, 6, 8, …等偶数ID了

可以看出,你的auto_increment字段在不同的服务器之间绝对不会重复,所以Master-Master结构就没有任何问题了。当然,你还可以使用3台,4台,或者N台服务器,只要保证auto_increment_increment = N 再设置一下auto_increment_offset为适当的初始值就可以了,那样,我们的MySQL可以同时有几十台主服务器,而不会出现自增长ID 重复。

相关文章

  • django2.2版本连接mysql数据库的方法

    django2.2版本连接mysql数据库的方法

    这篇文章主要介绍了django2.2版本如何连接mysql数据库,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • 如何修改mysql的隔离级别

    如何修改mysql的隔离级别

    MySQL的隔离级别是指数据库事务的隔离程度,用于控制并发事务之间的相互影响,本文就详细的介绍一下如何修改mysql的隔离级别,感兴趣的可以了解一下
    2023-08-08
  • phpmyadmin报错:#2003 无法登录 MySQL服务器的解决方法

    phpmyadmin报错:#2003 无法登录 MySQL服务器的解决方法

    通过phpmyadmin连接mysql数据库时提示:“2003 无法登录 MySQL服务器”。。。很明显这是没有启动mysql服务,右击我的电脑-管理-找到服务,找到mysql启动一下
    2012-04-04
  • 在MySQLDump中使用-w语句进行备份的方法

    在MySQLDump中使用-w语句进行备份的方法

    这篇文章主要介绍了在MySQLDump中使用-w语句进行备份的方法,MySQLDump是一款很有人气的MySQL数据转存工具,需要的朋友可以参考下
    2015-05-05
  • MySQL修改密码不成功(无效)的解决方案

    MySQL修改密码不成功(无效)的解决方案

    这篇文章主要介绍了MySQL修改密码不成功(无效)的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Windows Server 2003 下配置 MySQL 集群(Cluster)教程

    Windows Server 2003 下配置 MySQL 集群(Cluster)教程

    这篇文章主要介绍了Windows Server 2003 下配置 MySQL 集群(Cluster)教程,本文先是讲解了原理知识,然后给出详细配置步骤和操作方法,需要的朋友可以参考下
    2015-06-06
  • MySQL创建全文索引分享

    MySQL创建全文索引分享

    使用索引是数据库性能优化的必备技能之一。在MySQL数据库中,有四种索引:聚集索引(主键索引)、普通索引、唯一索引以及我们这里将要介绍的全文索引(FULLTEXT INDEX)
    2017-01-01
  • Navicat for MySql可视化导入CSV文件

    Navicat for MySql可视化导入CSV文件

    这篇文章主要为大家详细介绍了Navicat for MySql可视化导入CSV文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • MySQL查看与修改当前数据库编码的方法

    MySQL查看与修改当前数据库编码的方法

    这篇文章主要介绍了MySQL查看与修改当前数据库编码的方法,需要的朋友可以参考下
    2016-04-04
  • mysql8.0.20安装与连接navicat的方法及注意事项

    mysql8.0.20安装与连接navicat的方法及注意事项

    这篇文章主要介绍了mysql8.0.20安装与连接navicat的方法及注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05

最新评论