mysql 主从,主主,主主复制时的主键冲突解决

原理:slave 的i/o thread ,不断的去master抓取 bin_log, 写入到本地relay_log 然后sql thread不断的更新slave的数据
把主服务器所有的数据复制给从服务器

slave_sql_running 主从的sql进程
slave_io_running 主从的io进程
seconds_behind_master 主从的数据延时
主从步骤
1.数据库2边同步,设置my.cnf
[mysqld]
log-bin=mysql-bin
binlog_format=mixed
server-id = 1
expire_logs_days = 10
log-bin=master-bin
log-bin-index=master-bin.index
binlog_ignore_db=mysql
binlog_ignore_db=infomation_schema
binlog_ignore_db=performance_schema
2.在master上建立mysql用户,给slave用
created user 'ruser'@'%' indentified by 'ruserpwd' 建立用户
grant replication slave on *.* to 'ruser'@'%' 用户授权
第二种方法:grant replication client,replication slave on *.* to 'ruser'@'192.168.%.%' identified by '密码123'
格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by “密码”;
grant all privileges on *.* to 'root'@'%' identified by 'wangxiaohu'; 所有权限
flush privileges
reset master; 清空master
reset slave; 清空slave
show master logs; 查看日志
show master status \G 查看master状态,当前日志,及位置master_log_file,master_log_pos
3.从服务器my.ini 配置
[mysqld]
server-id = 2
expire_logs_days = 10
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
slave 从服务器上登录mysql运行change master 命令
show slave status \G 查看slave状态
change master to
MASTER_HOST='192.168.1.1' ,
MASTER_USER='' , //主服务器的帐号
MASTER_PASSWORD='',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=0;
4.start slave;
主主复制时的主键冲突解决
设置my.cnf里面的2个参数auto_increment_increment,auto_increment_offset
让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 要写到配置文件 中,防止下次重启后失效.
有几台服务器,auto_increment_increment就设置几,比如3台服务器,auto_increment_increment=3, 3台服务器的auto_increment_offset依次开始为,1,2,3

备注:
log-slave-updates是为从库的写操作记录binlog
多主互备和主从复制有一些区别,因为多主中的各个库,都可以对服务器有写权限,所以设计到自增长重复问题
可以看出,你的auto_increment字段在不同的服务器之间绝对不会重复,所以Master-Master结构就没有任何问题了。当然,你还可以使用3台,4台,或者N台服务器,只要保证auto_increment_increment = N 再设置一下auto_increment_offset为适当的初始值就可以了,那样,我们的MySQL可以同时有几十台主服务器,而不会出现自增长ID重复。
在这里我们说的是2台MYSQL服务器,你也可以扩展到多台,实现方法类似
A -> B -> C-> D ->A
这样一个环形的备份结构就形成了,最后可要记住 自增长ID(主键)要设计好哦,否则会出错的。
mysql 主从,主主,主主复制时的主键冲突解决的更多相关文章
- EF—主键冲突解决办法
报错信息: 编辑代码: 解决办法: 在Controller中不要把实体直接传过去,而要根据id先查出来,然后把查出来的实体传递过去就OK了
- 减少MySQL主从延迟的神器--并行复制大揭密
1. 简介 MySQL 5.6引入了基于schema的并行复制,即如果binlog events操作的是不同schema的对象,不是DDL,且操作的对象没有对其他schema的foreign key关 ...
- redis学习笔记——RDB、AOF和复制时对过期键的处理
AOF.RDB和复制功能对过期键的处理 生成RDB文件 在执行SAVE命令或者BGSAVE命令创建一个新的RDB文件时,程序会对数据库中的键进行检查,已过期的键不会被保存到新创建的RDB文件中.举个例 ...
- Mysql 使用delete drop truncate 删除数据时受外键约束影响解决方案
先禁用数据库的外键约束: set foreign_key_checks=0; 进行删除操作 delete.drop.truncate 恢复数据库外键约束: set foreign_key_checks ...
- 用EF6更新数据库时出现外键错误解决方式
在“Package Manager Console”中执行update-database命令,出现异常信息: Introducing FOREIGN KEY constraint 'FK_dbo.Pr ...
- MySQL高可用之组复制技术(3):配置多主模型的组复制
MySQL组复制系列文章: MySQL组复制大纲 MySQL组复制(1):组复制技术简介 MySQL组复制(2):配置单主模型的组复制 MySQL组复制(3):配置多主模型的组复制 MySQL组复制( ...
- MySQL主从介绍、配置主从、测试主从同步
6月28日任务 说明:有不少同学不能一次性把实验做成功,这是因为还不熟悉,建议至少做3遍17.1 MySQL主从介绍17.2 准备工作17.3 配置主17.4 配置从17.5 测试主从同步有的同学,遇 ...
- MySQL主从异常恢复
说明 MySQL主从出现不同步的情况时,或者要添加新的从库时,可以使用以下方法进行操作回复主从. 停止业务应用 停止所有连接到主从库上的应用,在恢复主从期间禁止任何增删改等操作,否则恢复失败 停止主从 ...
- 架构师必备:MySQL主从延迟解决办法
上一篇文章介绍了MySQL主从同步的原理和应用,本文总结了MySQL主从延迟的原因和解决办法.如果主从延迟过大,会影响到业务,应当采用合适的解决方案. MySQL主从延迟的表现 先insert或upd ...
随机推荐
- poj 2553 The Bottom of a Graph(强连通、缩点、出入度)
题意:给出一个有向图G,寻找所有的sink点.“sink”的定义为:{v∈V|∀w∈V:(v→w)⇒(w→v)},对于一个点v,所有能到达的所有节点w,都能够回到v,这样的点v称为sink. 分析:由 ...
- lua学习笔记(十三)
math库 定义在math中 所有三角函数都使用弧度 指数和对数函数 取整函数 伪随机数math.random 调用时没有参数返回0~1之间的随 ...
- Hadoop自带Sort例子分析
/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agree ...
- Elasticsearch5.X IN Windows 10 系列文章(1)
系统类型:windows10 64位家庭版 ElasticSearch版本: 5.5.1 (最新稳定版为5.5.2),由于用到IK中文分词插件,最新版本没有5.5.2 ,所以使用5.5.1 日期:2 ...
- CP936 转换成 UTF-8
最近写了一个抓取脚本,抓取的大部分内容正常,但少部分乱码 检测字符编码,得出的结果是CP936 mb_detect_encoding($str, 'GBK, gb2312, GB18030, ISO- ...
- 在Ubuntu下编译FFmpeg
第一步:准备编译环境 .tar.bz2 -2245/ ./configure --enable-static--enable-shared--prefix=/usr/localmakesudomake ...
- 【文献阅读】Densely Connected Convolutional Networks-best paper-CVPR-2017
Densely Connected Convolutional Networks,CVPR-2017-best paper之一(共两篇,另外一篇是apple关于GAN的paper),早在去年八月 De ...
- html5-补充知识
原理 html5+开发app的原理大概是这样: html页面负责内容: ui负责页面样式: js负责调用原生app方法. html5 html5这部分负责页面,也就是app中你看到的东西,大概的架构和 ...
- 高仿微信app (含有发红包,聊天,消息等)用到 Rxjava+Retrofit+MVP+Glide技术
https://github.com/GitLqr/LQRWeChat 技术很牛,可以看看
- IOS超强表格控件GMGridView
本文转载至 http://zyc-to.blog.163.com/blog/static/1715240020124235837247/ 介绍: iOS为我们提供UITableView类,实现了项目的 ...