从零开始的Linux运维屌丝之路,资源免费分享平台   运维人员首选:简单、易用、高效、安全、稳定、社区活跃的开源软件

MYSQL主主复制实现

发布:蔺要红09-03分类: MYSQL



配置主主环境的时候有两个参数控制步长和偏移量
在做主主同步前需要特别注意的一个问题:
主主复制和主从复制有一些区别,因为多主中都可以对服务器有写权限,所以设计到自增长重复问题,例如:出现的问题(多主自增长ID重复)
1. 首先在A和B两个库上创建test表结构;
2. 停掉A,在B上对数据表test(存在自增长属性的ID字段)执行插入操作,返回插入ID为1;
3. 然后停掉B,在A上对数据表test(存在自增长属性的ID字段)执行插入操作,返回的插入ID也是1;
4. 然后 同时启动A,B,就会出现主键ID重复

 
做主主同步时需要设置自增长的两个相关配置,如下:
auto_increment_offset       #表示自增长字段从那个数开始,其默认值是1,如果有n台mysql机器,则从第一台开始分为设1,2...n
auto_increment_increment    #表示自增长字段每次递增的量,其默认值是1,如果有n台mysql机器,这个值就设置为n。
  
在主主同步配置时,需要将两台服务器的:
auto_increment_increment     #增长量都配置为2
auto_increment_offset        #分别配置为1和2。这是序号,第一台从1开始,第二台就是2,以此类推!这样效果就是:master的数据id是1,3,5,7..., slave的数据id是2,4,6,8....
这样才可以避免两台服务器同时做更新时自增长字段的值之间发生冲突。(针对的是有自增长属性的字段)

 
mysql> SHOW VARIABLES LIKE 'auto_inc%';       # 查看数据库的自增步长 
+--------------------------+-------+ 
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 1     |
| auto_increment_offset    | 1     |
+--------------------------+-------+
2 rows in set (0.00 sec)

# 主主同步必要配置

#masterA自增长ID
log-slave-updates = true                # #将复制事件写入binlog,一台服务器既做主库又做从库此选项必须要开启
auto_increment_offset = 1
auto_increment_increment = 2           #奇数ID

#masterB自增加ID
log-slave-updates = true
auto_increment_offset = 2
auto_increment_increment = 2           #偶数ID
温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,如有侵权我会在24小时之内删除!

欢迎使用手机扫描访问本站