codejm 发表于 2013-1-29 16:29:59

MySQL binlog_format (Mixed,Statement,Row)[转]

 
MySQL 5.5 中对于二进制日志 (binlog) 有 3 种不同的格式可选:Mixed,Statement,Row,默认格式是 Statement。总结一下这三种格式日志的优缺点。

MySQL Replication 复制可以是基于一条语句 (Statement Level) ,也可以是基于一条记录 (Row Level),可以在 MySQL 的配置参数中设定这个复制级别,不同复制级别的设置会影响到 Master 端的 bin-log 日志格式。
1. Row
日志中会记录成每一行数据被修改的形式,然后在 slave 端再对相同的数据进行修改。
优点:在 row 模式下,bin-log 中可以不记录执行的 SQL 语句的上下文相关的信息,仅仅只需要记录那一条记录被修改了,修改成什么样了。所以 row 的日志内容会非常清楚的记录下每一行数据修改的细节,非常容易理解。而且不会出现某些特定情况下的存储过程或 function ,以及 trigger 的调用和触发无法被正确复制的问题。
缺点:在 row 模式下,所有的执行的语句当记录到日志中的时候,都将以每行记录的修改来记录,这样可能会产生大量的日志内容,比如有这样一条 update 语句:
<div class="wp_syntax" style="margin: 0px 0px 1.5em; padding: 0px; border: 1px solid silver; font-size: 13px; vertical-align: baseline; color: #110000; background-color: #f9f9f9; width: 620px; font-family: Tahoma, Arial, Helvetica, sans-serif; text-align: left;">1UPDATE product SET owner_member_id = 'b' WHERE owner_member_id = 'a'
页: [1]
查看完整版本: MySQL binlog_format (Mixed,Statement,Row)[转]