。Mysql Master将更新【Update】和变化【Change】作为事件【events】写入Binary log.Mysql slaves 被配置为读取Binary log from master ,以执行事件【events】.

每一个Slave 都会接收一个副本【entire content of the binary log】,由Slave来决定应执行Binary log 中的哪些语句。默认下,Slave会执行Master binary log中的所有events;在必要时,你可以配置使之只对特定库或表进行操作。

每个Slave都对自己的执行做了记录:FileName And Position within the file [binary log from the master].所以不同的slave独立执行Master binary log的不同部分,互不影响。

在复制服务中,Master和Slave都必须有惟一标识【server-id】,除此之外,每一个Slave 还应配置Master的hostName,logfileName及文件的位置。当然这些细节也可以在Slave中的Mysql会话【Mysql Session】中进行设置,使用CHANGE MASTER TO 语句。这些配置信息被保存在mysql.slave_master_info中。

具体控制语句,见手册:14.4.2 SQL Statements for Controlling Slave Servers,Section 14.4.1 SQL Statements for Controlling Master ServersSection 18.1.6 Replication and Binary Logging Options and Variables

1设置Master

必须启动 binary logging和建立ServerId;同时为了保证最大可能的持久性【durability】和一致性【consistency】,应该将innodb_flush_log_at_trx_commit=1 and sync_binlog=1.

2.创建一个复制用户【非必须】

要确保该用户具有REPLICAION SLAVE权限。

3.获取REPLICATION MASTER BINARY LOG的坐标【COORDINATES】

如果已经启动了Binary log ,可使用下面方法获取Master 的Binarylog 坐标:

运行 FLUSH TABLES WITH READ LOCK; 刷新所有表并阻止所有写操作,即阻止Commit[对Innodb]。

在另一个Session中,可使用SHOW MASTER STATUS 来确定binary log的名称和Position。

Note:该位置就是Slave开始更新的位置。

4,准备初始数据,至于采取哪种策略取决于MASTER上是否有要同步的数据。如果要同步初始数据,请转向4.1;否则转向5.

  4.1 保证Session运行以确保继续锁定。

  要将Master上指定库的数据同步到各个Slave上,使用mysqldump,是推荐做法,尤其对于innodb.

通过scp命令上传到Slave服务器,

在Master上,释放锁:UNLOCK TABLES

5,建立Slave

首先对Slave进行配置,为Slave 添加ServerId,并导入文件,如图:

配置Slave使之与Master通信:

p.p1 { margin: 0.0px 0.0px 0.0px 62.4px; text-indent: -62.4px; font: 13.0px Helvetica; background-color: #c0defd }

CHANGE MASTER TO

MASTER_HOST='192.168.7.44',

MASTER_USER='tjc',

MASTER_PASSWORD='123456',

MASTER_LOG_FILE='bin_log.000002',

MASTER_LOG_POS=5051;

启动Slave

查看Slave 状态:

如果 Slave_IO_Running 和 Slave_SQL_Running 都为Yes,则运行正常;如Slave_SQL_Running =NO,需要 START SLAVE.

也可以向集群中添加新的Slave,这时并不需要停止Master运行。只需要拷贝Slave的数据目录到新的Slave。具体可参考手册18.1.2.6。

关于主从复制的相关介绍,也可查看:

http://blog.csdn.net/hguisu/article/details/7325124

http://wangwei007.blog.51cto.com/68019/965575

Note:在主从复制时,如果遇到执行失败或错误,会导致从被卡住:Slave_SQL_Runnig:NO.有两种处理方式:

方法一:首先Stop slave;

    然后设置:set global SQL_SLAVE_SKIP_COUNTER=1;【指在遇到报错时跳过这我条,执行下一条】

    最后 Start slave;

方法二:使用 change master to ,将从的日志记录和位置强制更新到与主一致。【可能会造成数据丢失】。

推荐使用第一种。

也可参考:https://my.oschina.net/duguaoxue/blog/512152。

上面论述的只是单向主从模式,即Master-Slave,Master写,Slave只能读;Slave不能进行写操作,否则会出现问题。

下面介绍双主模式:即Master-Master:两服务器之间互为主从,都支持写操作,

配置时注意,双方都要进行change master to ,挂载到Master,

同时需将 log_slave_updates=1,将更新操作记录到BinLog,双方都要开启BInLog。

如:

 

Mysql 基于BinaryLog的复制的更多相关文章

  1. Mysql基于GTIDs的复制

    通过GTIDs[global transaction identifiers],可以标识每一个事务,并且可以在其一旦提交追踪并应用于任何一个Slave上:这样 就不需要像BinaryLog复制依赖Lo ...

  2. MYSQL 基于GTID的复制

    1.概述 从MYSQL5.6 开始,mysql开始支持GTID复制. 基于日志点复制的缺点: 从那个二进制日志的偏移量进行增量同步,如果指定错误会造成遗漏或者重复,导致数据不一致. 基于GTID复制: ...

  3. Mysql基于GTID复制模式-运维小结 (完整篇)

    先来看mysql5.6主从同步操作时遇到的一个报错:mysql> change master to master_host='192.168.10.59',master_user='repli' ...

  4. 详解MySQL主从复制实战 - 基于GTID的复制

    基于GTID的复制 简介 基于GTID的复制是MySQL 5.6后新增的复制方式. GTID (global transaction identifier) 即全局事务ID, 保证了在每个在主库上提交 ...

  5. [MySQL Reference Manual] 18 复制

    18 复制 18 复制 18.1 复制配置 18.1.1 基于Binary Log的数据库复制配置 18.1.2 配置基于Binary log的复制 18.1.2.1 设置复制master的配置 18 ...

  6. 高性能Mysql主从架构的复制原理及配置详解

    温习<高性能MySQL>的复制篇. 1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台 ...

  7. 转:高性能Mysql主从架构的复制原理及配置详解

    温习<高性能MySQL>的复制篇. 1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台 ...

  8. 高性能Mysql主从架构的复制原理及配置详解(转)

    温习<高性能MySQL>的复制篇. 1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台 ...

  9. 高性能Mysql主从架构的复制原理及配置

    1. 复制概述 1.1 mysql支持的复制类型 1.2 复制解决的问题 1.3 复制如何工作 2. 2 复制配置 2.1创建复制帐号 2.2拷贝数据 2.3配置master 2.4配置slave 2 ...

随机推荐

  1. jquery 表单清空

    $(':input','#myform') .not(':button, :submit, :reset, :hidden') .val('') .removeAttr('checked') .rem ...

  2. windows server 2008 R2 SP1 安装exchange 2010

    一. 先决条件 若在windows server R2 SP1企业版系统上典型安装exchange server2010 SP3,则需要提前确定一下先决条件 AD域环境,域和林的功能级别必须是wind ...

  3. MRC

    MRC 关于NSString,retainCount为-1 C方法中含有Copy的方法名, 都要释放 例如CFRealse(ref) 字符串常量,因为one为字符串常量,系统不会回收,也不会对其作引用 ...

  4. php中发送email

    一.使用PHP内置的mail()函数 看了一下手册,就直接开始写代码了,如下 <?php $to = "test@163.com"; //收件人 $subject = &qu ...

  5. 17 任务调度相关类综述——Live555源码阅读(一)任务调度相关类

    这是Live555源码阅读的第二部分,包括了任务调度相关的三个类.任务调度是Live555源码中很重要的部分. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/ol ...

  6. Intellij IDEA使用总结

    查询快捷键CTRL+N   查找类CTRL+SHIFT+N  查找文件CTRL+SHIFT+ALT+N 查 找类中的方法或变量CIRL+B   找变量的来源CTRL+ALT+B  找所有的子类CTRL ...

  7. TLS 与 python thread local

    TLS 先说TLS( Thread Local Storage),wiki上是这么解释的: Thread-local storage (TLS) is a computer programming m ...

  8. webrtc开源项目音频重采样“不友好接口”的几点总结

    WebRTC(Web Real Time Communication)并不是Google原来自己的技术,在2010年,Google以大约6820万美元收购了VoIP软件 开发商Global IP So ...

  9. htpasswd命令

    htpasswd命令是Apache的Web服务器内置工具,用于创建和更新储存用户名.域和用户基本认证的密码文件. 语法 htpasswd(选项)(参数) 选项 -c:创建一个加密文件:-n:不更新加密 ...

  10. 【GoLang】50 个 Go 开发者常犯的错误

    1. { 换行:   Opening Brace Can't Be Placed on a Separate Line 2. 定义未使用的变量:  Unused Variables 2. import ...