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上处理。
事件时记录在binary log 按不同的格式更具事件的类型。
不同的复制格式用于相应的binary logging 格式用于当events 是记录到Master的binary log.
binary logging格式和术语之间的关系是用于在复制过程中:
当使用基于语句的binary logging,master 写SQL 语句到binary log.master的复制到slaves的工作通过执行SQL语句在slave上。
这是被称为是基于语句的复制(简称SBR),相应的到标准的MySQL 基于语句的binary loging 格式。
复制功能在MySQL 版本5.1.4 和早期版本使用这个格式
当使用基于行的日志记录,master 写events 到binary log 表明单个表记录被改变。
master的复制到slave 工作通过复制events 表示改变到表的记录到slave.
这个被称为基于行的复制(简称RBR),在基于行的复制,master 写events到binary log 表明单个表的记录被改变
你也可以配置MySQL 使用一个混合基于语句的和基于行的记录日志格式,
依赖哪个是最适合的对于记录改变, 这被称为是混合格式记录。
放使用混合格式记录, 一个基于语句log是默认使用的。依赖某些语句, 和使用的存储引擎。
日志会自动的切换到row-based 在特定的例子。 复制使用混合模式是经常称为混合复制或者混合格式复制
In MySQL 5.6, statement-based format is the default. 基于语句格式是默认的:
当使用混合格式, binary logging 格式是取决于通过使用的存储引擎和执行的语句。
日志格式在一个运行的MySQL server 是通过设置binlog_format 参数控制的,
变量可以设置session级别或者全局级别。
规则控制何时和如何 新的设置生效 生效是和其他的MySQL server 系统变量一样
设置变量对于当前的session 持续只有到会话结束,
改变对于其他sessions是不可见的, 设置变量全局需要一个重启server生效。
有些情况下,你不能改变binary logging格式 在运行时或者这么做会导致复制失败
你必须有SUPER 权限来设置全局或者session binlog_fomat 值
基于语句和行复制格式有不同的问题和限制
基于语句的复制,你可能会遇到 复制存储过程或者触发器。
你可以避免那些问题通过使用 基于行的复制