17.1.2 Replication Formats 复制格式:

17.1.2.1 Advantages and Disadvantages of Statement-Based and Row-Based Replication

17.1.2.2 Usage of Row-Based Logging and Replication

17.1.2.3 Determination of Safe and Unsafe Statements in Binary Logging

复制工作 因为events 写入到binary log 是从master读取的,在slave上处理。

events 是被记录在binary log 以不同的格式根据evnet的类型。

当使用基于语句的binary logging,master 写SQL语句到binary log,

主从复制通过执行SQL语句在slave上。 这是叫做语句复制(简称SBR),

对应的标准MySQL 基于语句的binary logging 格式。

当使用基于行的logging,master 写events到binary log 表明那些改变的表的单独的行。

主从复制通过复制events 表示表记录改变的行到slave.这个叫做row-based 复制(也叫做RBR)

在基于行的复制,master 写events 到binary log 表明单个表的记录是如何改变的。

你也可以配置MySQL 来使用混合模式(both 基于语句的和基于行的)

依赖最适当的改变被记录。这个称谓换个格式记录。

当使用混合格式记录,一个基于语句的日志时默认使用的,依赖某些语句,以及存储引擎的使用,

log是自动切换到基于行的 在某个情况下。复制使用混合格式通过被称为混合复制或者混合格式复制

在MySQL 5.6,默认是基于语句的

MySQL Cluster. 默认的binary logging 格式在所有的MySQL Cluster NDB 7.3和MySQL Cluster NDB7.4 版本是混合的。

你应该注意 MySQL Cluster 复制总是使用基于行的复制,NDB 存储引擎是不兼容基于语句的复制。

当使用混合模式,binary logging 格式是是在存储引起的一部分中确定使用,语句被执行。

更多的信息 关于 mixed-format logging和支持规则的更多信息,see Section 5.2.4.3, “Mixed Binary Logging Format”.

日志格式在一个运行MySQL 服务器通过binlog_format 服务器变量控制。

这个变量可以在session或者全局范围设置,规则调节 新的设置生效时和其他的MySQL 系统变量一样的

设置变量对于当前的会话持续直到session结束,改变对于其他会话是不可见的,

设置全局变量需要重启服务器生效。 更多的信息, see Section 13.7.4, “SET Syntax”.

这里有一些情况,你不能改变Binary logging format 在运行时或者这样做会导致复制失败。

See Section 5.2.4.2, “Setting The Binary Log Format”.

你必须有SUPER 权限来设置全局或者session的binlog_format value.

基于语句和基于行复制有不同的问题和局限性,因为他们的相对优势和劣势的比较,见17.1.2.1,”优势和基础,基于行的复制

”语句的缺点。

基于语句的复制,您可能会遇到复制存储例程或触发器的问题。可以使用基于行的复制来避免这些问题。对于更

多信息,请参见20.7节“存储程序的二进制日志”。