Mysql 基于BinaryLog的复制
。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 Servers,Section 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的复制的更多相关文章
- Mysql基于GTIDs的复制
通过GTIDs[global transaction identifiers],可以标识每一个事务,并且可以在其一旦提交追踪并应用于任何一个Slave上:这样 就不需要像BinaryLog复制依赖Lo ...
- MYSQL 基于GTID的复制
1.概述 从MYSQL5.6 开始,mysql开始支持GTID复制. 基于日志点复制的缺点: 从那个二进制日志的偏移量进行增量同步,如果指定错误会造成遗漏或者重复,导致数据不一致. 基于GTID复制: ...
- Mysql基于GTID复制模式-运维小结 (完整篇)
先来看mysql5.6主从同步操作时遇到的一个报错:mysql> change master to master_host='192.168.10.59',master_user='repli' ...
- 详解MySQL主从复制实战 - 基于GTID的复制
基于GTID的复制 简介 基于GTID的复制是MySQL 5.6后新增的复制方式. GTID (global transaction identifier) 即全局事务ID, 保证了在每个在主库上提交 ...
- [MySQL Reference Manual] 18 复制
18 复制 18 复制 18.1 复制配置 18.1.1 基于Binary Log的数据库复制配置 18.1.2 配置基于Binary log的复制 18.1.2.1 设置复制master的配置 18 ...
- 高性能Mysql主从架构的复制原理及配置详解
温习<高性能MySQL>的复制篇. 1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台 ...
- 转:高性能Mysql主从架构的复制原理及配置详解
温习<高性能MySQL>的复制篇. 1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台 ...
- 高性能Mysql主从架构的复制原理及配置详解(转)
温习<高性能MySQL>的复制篇. 1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台 ...
- 高性能Mysql主从架构的复制原理及配置
1. 复制概述 1.1 mysql支持的复制类型 1.2 复制解决的问题 1.3 复制如何工作 2. 2 复制配置 2.1创建复制帐号 2.2拷贝数据 2.3配置master 2.4配置slave 2 ...
随机推荐
- java 自定义标签 传值
<?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://ja ...
- iOS开发——源代码管理——git(分布式版本控制和集中式版本控制对比,git和SVN对比,git常用指令,搭建GitHub远程仓库,搭建oschina远程仓库 )
一.git简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的 git的起源 作者是Linux之父:Linus Bened ...
- BZOJ 4579: [Usaco2016 Open]Closing the Farm
Description 依次删去一个点和它的边,问当前图是否连通. Sol 并查集. 倒着做就可以了. 每次将一个点及其的边加入,如果当前集合个数大于 1,那么就不连通. Code /******** ...
- BZOJ 3270: 博物馆
Sol 期望DP+高斯消元. 根据本题题意列出期望方程\[E(i,j)=(1-p_i)(1-p_j)E(u,v)+(1-p_i)p_jE(u,j)+p_i(1-p_j)E(i,v)+p_ip_jE(i ...
- quickLinux
在cmd下稍微模仿一下linux的习惯...配置...主要是环境变量...就不用说了吧... time 要用 time.exe...可以计时...这个命令接受一个命令...可以中间有空格... ls直 ...
- phpcms不能后台编辑模板
刚安装的phpcms后台无法编辑模板,实际上只需要改一个系统文件的值即可 打开phpcms项目根目录下的: caches/configs/system.php 找到第20行,代码如下: 'tpl_ed ...
- JSP工作原理
一.历史 JSP是Servlet的扩展,JSP没出现之前,就已经出现了Servlet技术.Servlet是利用了"输出流",动态的生成了HTML页面.包括 每一个HTML标签和所有 ...
- C# 数组、多维数组(矩形数组)、锯齿数组(交叉数组)
数组是变量的索引列表,可以在方括号中指定索引来访问数组中的各个成员,其中索引是一个整数,从0开始. 一维数组 多维数组(矩形数组) 数组的数组(锯齿数组) 数组必须在访问之前初始化,数组的初始化有两种 ...
- 【leetcode】Wildcard Matching
Wildcard Matching Implement wildcard pattern matching with support for '?' and '*'. '?' Matches any ...
- Python之异常追踪模块:traceback
正常时输出追踪信息: import traceback def stack(): print 'The python stack:' traceback.print_stack() from twis ...