。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. Windows下几个常用的和进程有关的命令

    在windows下,进入cmd,有几个常用的和进程有关的命令: netstat -ano:查看所有进程 netstat -ano|findstr  “端口号”:查看端口号对应的进程PID taskli ...

  2. Asp.Net网页头部动态加载标题、描述、关键字、css和js文件的方法

    首先head标签上添加runat="server". protected void Page_Load(object sender, EventArgs e) { Page.Tit ...

  3. Dijkstra(歪果仁的名字真是长。。。)

    Dijkstra算法又称为单源最短路径,所谓单源是在一个有向图中,从一个顶点出发,求该顶点至所有可到达顶点的最短路径问题.       设G=(V,E)是一个有向图,V表示顶点,E表示边.它的每一条边 ...

  4. 2016年11月2日--Window.document对象

    一.找到元素: docunment.getElementById("id"):                      根据id找,最多找一个: var a =docunment ...

  5. hdu1536&&hdu3023 SG函数模板及其运用

    S-Nim Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & %I64u Submit Status ...

  6. 17.3---阶乘尾多少个0(CC150)

    思路,其实这题easy,就是看多少个5. 答案: public static int getFactorSuffixZero(int n) { // write code here int res = ...

  7. vb.net 控件(包括字体)随窗体按比例缩放

    Public Class frmDl Dim x As Single = 0 Dim y As Single = 0 Private Sub frmDl_Load(ByVal sender As Sy ...

  8. pycharm3.4 下svn 项目checkout&配置

    pycharm 社区版: 3.4 1. checkout 项目 注意,之前配置好:设置里面的一些配置:(以下勾勾不要勾上) 2. checkout 项目之后,做以下操作: vcs ->enabl ...

  9. ADO.NET和ADO.NET Entity Framework

    ADO.NET 3.0 用于访问和操作数据的两个主要组件是 .NET Framework 数据提供程序和 DataSet. .NET Framework 数据提供程序 .NET Framework 数 ...

  10. Find celebrity

    Suppose you are at a party with n people (labeled from 0 to n - 1) and among them, there may exist o ...