`
zhengdl126
  • 浏览: 2549434 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

解决两个mysql数据库双向同步的键值冲突问题(奇偶)

阅读更多

多主互备和主从复制有一些区别,因为多主中都可以对服务器有写权限,所以设计到自增长重复问题

出现的问题(多主自增长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 重复。

 

分享到:
评论

相关推荐

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

    MySQL 双向同步是一种高可用性和容错性的数据库配置,其中两个或多个数据库服务器可以相互作为主服务器,互相复制数据。然而,这种设置可能会遇到一个关键问题:自增长键值的冲突。当两个服务器独立地生成具有相同自...

    两个MySQL数据库之间同步表结构及索引模式.md

    两个MySQL数据库之间同步表结构及索引模式

    Mysql5.5数据库双向同步

    根据给定的文件信息,“Mysql5.5数据库双向同步”这一主题深入探讨了如何在两个MySQL 5.5服务器之间建立稳定的数据同步机制,确保数据的一致性和高可用性。以下是对该知识点的详细解析: ### 一、理解MySQL双向同步...

    java实现两个mysql同步主库的数据

    下面我们将深入探讨如何使用Java实现两个MySQL数据库之间的数据同步,以及涉及的相关知识点。 首先,我们需要理解MySQL的复制原理。MySQL的主从复制是基于日志的,主库上的所有更改都会被记录到二进制日志(binlog...

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

    总结来说,解决MySQL双向同步中的键值冲突,特别是自增ID冲突,主要依赖于合理配置`auto_increment_offset` 和 `auto_increment_increment` 参数。通过设置不同的初始偏移和相同的步长,可以确保每个服务器生成唯一...

    如何在两台MySQL数据库间实现同步

    在开发环境中,有时需要在两台MySQL数据库之间实现数据同步,以确保数据的一致性和冗余。本教程将详细介绍如何在两台运行相同系统(FreeBSD 5.4)和软件(Apache 2.0.55、PHP 4.4.0、MySQL 4.1.15)的服务器上配置...

    利用Docker,配置两个mysql数据库,并让其主从数据同步.txt

    利用Docker,配置两个mysql数据库,并让其主从数据同步

    MySQL数据库两台主机同步

    MySQL数据库两台主机同步是指在两个主机之间实现MySQL数据库的热备,以便在任意一台机器出现故障时,只需要人工切换程序连接到另一台机器即可恢复程序的正常运行。下面是实现MySQL数据库两台主机同步的详细步骤: 1...

    java比较两个mysql数据库中的表信息差异

    一个简单JAVA 小工程进行两个MYSQL数据库对象的比较,导入eclipse中,修改jdbc.properties文件中的JDBC信息,然后直接运行action包类中的main方法,生成EXCEL,excel中包含表,表中列,索引,函数过程差异比对结果。...

    Mysql两个数据库表之间双向数据同步方案.docx

    ### MySQL两个数据库表之间的双向数据同步方案 #### 概述 本文档主要介绍了一种针对MySQL环境下两个数据库表之间的双向数据同步方案。该方案适用于需要保持两个不同位置或不同环境中数据库表数据一致性的场景,...

    同步两台mysql数据库

    标题"同步两台mysql数据库"指的是在两个或多个MySQL服务器之间进行数据复制和同步,确保数据的一致性。传统的MySQL同步通常涉及主从复制,即一个主数据库负责写操作,多个从库进行读操作并接收主库的更新。然而,这...

    java多个数据库实现数据同步

    数据同步是指在两个或多个数据库之间,当某个数据库中的数据发生改变时,这些变化能够被实时或者近实时地反映到其他数据库中。这有助于防止数据丢失和减少数据冲突,保证各个节点的数据一致性。 在Java中,实现多...

    MySql数据库同步复制

    MySQL 数据库同步复制是一种强大的技术,它允许两个或多个数据库实例之间保持数据一致性。这种功能在高可用性、灾难恢复和负载均衡场景中至关重要。在MySQL中,同步复制主要通过主从模式和双机互备模式来实现。 1. ...

    同步两个数据库的数据

    这里的“同步两个数据库的数据”指的是确保两个数据库中的特定表——在这个例子中是“staff”表——保持一致。以下是对这个主题的详细解释: 首先,同步的目的是确保数据的一致性,避免数据丢失或冲突。在这种情况...

    mysql5.7双向实时同步

    MySQL 5.7 双向实时同步是一种数据库高可用性和数据一致性的重要技术,它使得两个或多个MySQL实例之间能够实时地互相复制数据。在企业级应用中,这种同步策略常用于构建主主复制架构,以确保即使在一台服务器故障时...

    MyEclipse连接MySQL数据库报错解决办法

    我们现在一般网站都是利用的MySQL数据库搭建网站的,但是在网上看到很多网友吐槽数据库连接不上的问题,现在我就结合相关资料向提出一些我个人的见解,希望对大家解决问题有帮助。 一般MySQL连接不上,可能有两大...

    win下安装2个mysql数据库

    ### 在Windows系统下安装两个MySQL数据库的步骤与配置 #### 安装背景及目的 在实际的应用场景中,有时我们可能需要在同一台Windows主机上安装并运行多个MySQL实例,例如进行开发测试环境分离或者实现不同项目的...

    Mysql异地多活数据双向同步-CloudCanal实战.doc

    Mysql 异地多活数据双向同步-CloudCanal 实战 本文主要介绍了使用 CloudCanal 实现 Mysql ...综合考虑到数据的映射、裁剪、转换、冲突策略等动作,使用 CloudCanal 实现 MySQL 异地多活数据双向同步是一个更好的选择。

Global site tag (gtag.js) - Google Analytics