原理: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 主从,主主,主主复制时的主键冲突解决的更多相关文章

  1. EF—主键冲突解决办法

    报错信息: 编辑代码: 解决办法: 在Controller中不要把实体直接传过去,而要根据id先查出来,然后把查出来的实体传递过去就OK了

  2. 减少MySQL主从延迟的神器--并行复制大揭密

    1. 简介 MySQL 5.6引入了基于schema的并行复制,即如果binlog events操作的是不同schema的对象,不是DDL,且操作的对象没有对其他schema的foreign key关 ...

  3. redis学习笔记——RDB、AOF和复制时对过期键的处理

    AOF.RDB和复制功能对过期键的处理 生成RDB文件 在执行SAVE命令或者BGSAVE命令创建一个新的RDB文件时,程序会对数据库中的键进行检查,已过期的键不会被保存到新创建的RDB文件中.举个例 ...

  4. Mysql 使用delete drop truncate 删除数据时受外键约束影响解决方案

    先禁用数据库的外键约束: set foreign_key_checks=0; 进行删除操作 delete.drop.truncate 恢复数据库外键约束: set foreign_key_checks ...

  5. 用EF6更新数据库时出现外键错误解决方式

    在“Package Manager Console”中执行update-database命令,出现异常信息: Introducing FOREIGN KEY constraint 'FK_dbo.Pr ...

  6. MySQL高可用之组复制技术(3):配置多主模型的组复制

    MySQL组复制系列文章: MySQL组复制大纲 MySQL组复制(1):组复制技术简介 MySQL组复制(2):配置单主模型的组复制 MySQL组复制(3):配置多主模型的组复制 MySQL组复制( ...

  7. MySQL主从介绍、配置主从、测试主从同步

    6月28日任务 说明:有不少同学不能一次性把实验做成功,这是因为还不熟悉,建议至少做3遍17.1 MySQL主从介绍17.2 准备工作17.3 配置主17.4 配置从17.5 测试主从同步有的同学,遇 ...

  8. MySQL主从异常恢复

    说明 MySQL主从出现不同步的情况时,或者要添加新的从库时,可以使用以下方法进行操作回复主从. 停止业务应用 停止所有连接到主从库上的应用,在恢复主从期间禁止任何增删改等操作,否则恢复失败 停止主从 ...

  9. 架构师必备:MySQL主从延迟解决办法

    上一篇文章介绍了MySQL主从同步的原理和应用,本文总结了MySQL主从延迟的原因和解决办法.如果主从延迟过大,会影响到业务,应当采用合适的解决方案. MySQL主从延迟的表现 先insert或upd ...

随机推荐

  1. sprint3 【每日scrum】 TD助手站立会议第十天

    站立会议 组员 昨天 今天 困难 签到 刘铸辉 (组长) 团队进入最终的功能测试阶段,准备发布Beta版 和团队发布Beta版,并开总结会议 总结会议 Y 刘静 团队集合软件测试 软件发布 没有 Y ...

  2. MapReduce小文件处理之CombineFileInputFormat实现

    在MapReduce使用过程中.一般会遇到输入文件特别小(几百KB.几十MB).而Hadoop默认会为每一个文件向yarn申请一个container启动map,container的启动关闭是很耗时的. ...

  3. MyBatis_传入参数的问题

    一.单个参数 1.基本数据类型 (1)直接使用 List<ChargeRuleDO> tests(long id); <select id="tests" res ...

  4. 转:什么是Node.js?

    Node不是万能药!但的确能解决一些关键问题 学习Node不是一件轻松事儿,但你所收到的回报是对得起你的付出的.因为当下Web应用开发中的诸多难题唯有JavaScript才能解决. 目录 专家们的警告 ...

  5. VMware网络连接 桥接、NAt、host-only模式

    如果你想利用VMWare安装虚拟机,或想创建一个与网内其他机器相隔离的虚拟系统,进行特殊的调试工作.此时,对虚拟系统网络连接模式的选择就非常重要了.如果你选择的工作模式不正确,就无法实现上述目的,也就 ...

  6. 智能路由器开发指南_book

    最近购得一个openwrt书籍<智能路由器开发指南>,作者张永智. Building a smart router with openwrt 作者网址:http://openwrt.bjb ...

  7. linux无线网络配置_转

    转自:http://www.cnblogs.com/dartagnan/archive/2010/12/05/2003521.html   一位资生linux 原文:http://www.hpl.hp ...

  8. unittest 结合 ddt

    数据驱动测试ddt,使用的重点: 1.@ddt.ddt2.@ddt.data(*zip(range(10),range(10,20)))       注意一定要带* 3.@ddt.unpack # c ...

  9. WPF Button TextBox 圆角

    <!--圆角button--> <Style TargetType="Button"> <Setter Property="FontSize ...

  10. Unity3d NGUI 360度旋转

    [AddComponentMenu("NGUI/Examples/Spin With Mouse")] publicclass SpinWithMouse : MonoBehavi ...