。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. Android手机如何通过USB共享网络给Mac?

    最近网络挂了,mac不能上网查资料,心情非常毛躁,急切寻求用mac蹭WiFi的方法. 没有找到电脑端破解WiFi密码的软件,手头的Android手机没有root,也无法查看WiFi密码--->破 ...

  2. OpenCV imread读取图片,imshow展示图片,出现cv:Exception at memory location异常

    问题如上.环境:VS2013. 代码如下: #include "stdafx.h" #include "opencv2\opencv.hpp" using na ...

  3. 45个实用的JavaScript技巧、窍门和最佳实践

    在这篇文章中,我将分享一组JavaScript的技巧.窍门和最佳实践,这些都是JavaScript程序员应该知晓的,不管他们是使用在浏览器/引擎上,还是服务器端(SSJS——Service Side ...

  4. [开源类库/项目] android保存崩溃时的错误信息log至本地【源码+jar包+使用说...

    不知大家是否经常遇到这种情况:自己的项目有时会在没有连接到电脑时发生崩溃,好不容易发现的bug结果连接到电脑时又复现不出来了:又或者自己写的一个功能在开机启动时产生小bug导致崩溃,而刚启动的机器想让 ...

  5. 观察者(Observer)模式

    http://www.cnblogs.com/zhenyulu/articles/73723.html 一. 观察者(Observer)模式 观察者模式又叫做发布-订阅(Publish/Subscri ...

  6. UIView的layoutSubviews和drawRect

    原文: UIView的layoutSubviews和drawRect UIView的setNeedsDisplay和setNeedsLayout方法.首先两个方法都是异步执行的.setNeedsDis ...

  7. php配置中的register_globals用法

    开发的时候设置成register_globals=off,只能通过post或get得到前端数据. 参考资料:http://blog.csdn.net/alex_best/article/details ...

  8. HTTP及状态码汇总

    什么是HTTP: HTTP(HyperText Transfer Protocol超文本传输协议)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准,为了提供一种发布和接收HTM ...

  9. eclipse中整合springMvc和velocity

    1.项目所需要的jar包(有些可能多余) 2.在src目录下创建一个bean  一个一个controller ,路径如下 person代码: package com.test.bean; import ...

  10. windows下php,redis配置

    在windows环境下搭建redis是一般是为了测试,官方redis并没有给windows版redis但是微软有. windows版下载地址:https://github.com/MSOpenTech ...