mysql主主同步两个数据库同时写入,实现原理:自动增长主键不重复

出现的问题(多主自增长ID重复)

?

解决方法:

我们只要保证两台服务器上插入的自增长数据不同就可以了

如:A查奇数ID,B插偶数ID,当然如果服务器多的话,你可以定义算法,只要不同就可以了

?

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

?

A:my.ini上加入参数

?

auto_increment_offset?=?1

auto_increment_increment?=?2

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

?

B:my.ini上加入参数

?

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重复。

?

在这里我们说的是2台MYSQL服务器,你也可以扩展到多台,实现方法类似

A?->?B?->?C->?D?->A

这样一个环形的备份结构就形成了,最后可要记住?自增长ID(主键)要设计好哦,否则会出错的。

转载:http://blog.51cto.com/sndapk/922606

原文地址:https://www.cnblogs.com/mylover2/p/11015721.html

时间: 2024-11-03 03:44:20

mysql主主同步两个数据库同时写入,实现原理:自动增长主键不重复的相关文章

mysql 主从半同步模式和数据库同步过滤

在mysql主从架构中,默认采用的是异步模式,也就是在master中将数据保存在数据库,再将操作写到bin-log中即响应给客户端.至于slave是否同步了二进制文件,是否完成了本地操作,master无从得知.异步模式固然能以最快的速度响应给客户端,减少用户的等待时间,但在一些数据同步.安全性较高的场景,要求slave中的数据要尽最大能力与master保持一致,那么半同步模式就可以用上了. mysql的半同步模式是以插件的方式由google提供的.主要文件在${mysql_home}/lib/p

PLSQL_Material View物化视图的基本概念和用法 (概念)(以物化视图的方式同步两个数据库间的表或实时备份重要表)

2014-06-08 BaoXinjian 1. 用法 物化视图是包括一个查询结果的数据库对象,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表. 物化视图存储基于远程表的数据,也可以称为快照.对于复制,物化视图允许你在本地维护远程数据的副本,这些副本是只读的. 如果你想修改本地副本,必须用高级复制的功能.当你想从一个表或视图中抽取数据时,你可以用从物化视图中抽取. 对于数据仓库,创建的物化视图通常情况下是聚合视图,单一表聚合视图和连接视图. 实现两个数据库之间的数据同步,可以存在时

同步两个数据库的结构或者数据

需求:开发中常常需要将开发环境中的数据信息(表结构)同步到正式环境中的数据库,比如添加表和修改表等操作,通常是先记下,然后人工进行修改同步 现在navicat for mysql这个工具提供了这个功能! 测试功能:能检测到修改了,添加的字段,表添加.其他自行测试 1.打开navicat 然后,点击"工具",点击结构同步(数据同步可以去自行研究),如图 2.如下设置回将test2修改信息同步到,比如我test2中表字段的修改,表的添加都会同步到test中,test2==>test1

MyBatis_获取自动增长主键

Mapper.xml映射文件 测试方法

LVS+MYCAT+读写分离+MYSQL主备同步部署手册

LVS+MYCAT+读写分离+MYSQL主备同步部署手册 1          配置MYSQL主备同步…. 2 1.1       测试环境… 2 1.2       配置主数据库… 2 1.2.1         编辑my.cnf文件… 2 1.2.2         重启数据库… 2 1.3       锁定主数据库DDL操作… 2 1.4       主备已有数据同步… 2 1.5       停止从服务… 3 1.6       配置备用数据库… 3 1.6.1         编辑my

【转载】LVS+MYCAT+读写分离+MYSQL主备同步部署手册(邢锋)

By leo | 2015/05/13 0 Comment LVS+MYCAT+读写分离+MYSQL主备同步部署手册 1          配置MYSQL主备同步…. 2 1.1       测试环境… 2 1.2       配置主数据库… 2 1.2.1         编辑my.cnf文件… 2 1.2.2         重启数据库… 2 1.3       锁定主数据库DDL操作… 2 1.4       主备已有数据同步… 2 1.5       停止从服务… 3 1.6      

php同步mysql两个数据库中表的数据

分别创建两个数据库和两张表study库-zone表teaching库-area表 //****SQL脚本****// 1.创建teaching数据库area数据表 create database teaching; CREATE TABLE `area` ( `id` int(11) NOT NULL AUTO_INCREMENT, `areaID` varchar(50) CHARACTER SET utf8 DEFAULT NULL, `area` varchar(60) CHARACTER

双主,主从同步设置的重要参数log_slave_updates

说明:最近部署了mysql的集群环境,详细如下M01和M02为主主复制,M01和R01为主从复制:在测试的过程中发现了以下问题: 1.M01和M02的主主复制是没有问题的(从M01写入数据能同步到M02,从M02写入数据能够同步到M01); 2.主从同步的时候,当从M01写入的时候,数据可以写入到R01: 3.当从M02写入的时候,数据就不能写入到R01: 问题的原因:log_slave_updates参数的状态为NO mysql的官网说明如下: Normally, a slave does n

mysql数据库主从同步配置教程--数据库同步

背景: 最近有一个mysql数据库同步的需求,我用了mysql主从同步的方法来实现.下面把步骤记录一下. 环境和拓扑 操作系统:Centos6.6 X64 mysql版本:5.1.73 Master: 10.6.1.210 Slave:  10.6.1.211 需求: 实现Master上test库同步到Slave上,但是禁止同步该库下的AA表 1.配置Master上的my.cnf #vim  /etc/my.cnf 添加内容到[mysqld]下,设定只同步test 数据库: [mysqld] l