MySQL官方对于binlog_format参数的说明:

http://dev.mysql.com/doc/refman/5.5/en/binary-log-setting.html

binlog_format可以动态修改,官网对于动态修改主库配置时提醒谨慎操作,会导致复制关系异常。

【主库flush logs,binlog_format='STATEMENT'】
【从库flush logs,binlog_format='MIXED'】

【主库】
# at 107
#140919 14:17:50 server id 16024 end_log_pos 178 Query thread_id=13 exec_time=0 error_code=0
SET TIMESTAMP=1411107470/*!*/;
BEGIN
/*!*/;
# at 178
#140919 14:17:50 server id 16024 end_log_pos 281 Query thread_id=13 exec_time=0 error_code=0
use jiangxu/*!*/;
SET TIMESTAMP=1411107470/*!*/;
delete from t1 where c1 in (50,51,52)
/*!*/;
# at 281
#140919 14:17:50 server id 16024 end_log_pos 353 Query thread_id=13 exec_time=0 error_code=0
SET TIMESTAMP=1411107470/*!*/;
COMMIT/*!*/;
【从库】
# at 107
#140919 14:17:50 server id 16024 end_log_pos 178 Query thread_id=13 exec_time=253 error_code=0
SET TIMESTAMP=1411107470/*!*/;
BEGIN
/*!*/;
# at 178
#140919 14:17:50 server id 16024 end_log_pos 281 Query thread_id=13 exec_time=253 error_code=0
use `jiangxu`/*!*/;
SET TIMESTAMP=1411107470/*!*/;
delete from t1 where c1 in (50,51,52)
/*!*/;
# at 281
#140919 14:17:50 server id 16024 end_log_pos 353 Query thread_id=13 exec_time=253 error_code=0
SET TIMESTAMP=1411107470/*!*/;
COMMIT/*!*/;

【主库flush logs,binlog_format='MIXED'】
【从库flush logs,binlog_format='MIXED'】

【主库】
# at 107
#140919 14:28:52 server id 16024 end_log_pos 178 Query thread_id=1 exec_time=0 error_code=0
SET TIMESTAMP=1411108132/*!*/;
BEGIN
/*!*/;
# at 178
#140919 14:28:52 server id 16024 end_log_pos 281 Query thread_id=1 exec_time=0 error_code=0
use jiangxu/*!*/;
SET TIMESTAMP=1411108132/*!*/;
delete from t1 where c1 in (40,41,42)
/*!*/;
# at 281
#140919 14:28:52 server id 16024 end_log_pos 308 Xid = 14
COMMIT/*!*/;
【从库】
# at 353
#140919 14:28:52 server id 16024 end_log_pos 412 Query thread_id=1 exec_time=253 error_code=0
SET TIMESTAMP=1411108132/*!*/;
BEGIN
/*!*/;
# at 412
#140919 14:28:52 server id 16024 end_log_pos 515 Query thread_id=1 exec_time=253 error_code=0
SET TIMESTAMP=1411108132/*!*/;
delete from t1 where c1 in (40,41,42)
/*!*/;
# at 515
#140919 14:28:52 server id 16024 end_log_pos 542 Xid = 25540
COMMIT/*!*/;

【主库flush logs,binlog_format='ROW'】
【从库flush logs,binlog_format='MIXED'】

【主库】
# at 107
#140919 14:41:21 server id 16024 end_log_pos 178 Query thread_id=1 exec_time=0 error_code=0
SET TIMESTAMP=1411108881/*!*/;
BEGIN
/*!*/;
# at 178
# at 225
#140919 14:41:21 server id 16024 end_log_pos 225 Table_map: `jiangxu`.`t1` mapped to number 33
#140919 14:41:21 server id 16024 end_log_pos 275 Delete_rows: table id 33 flags: STMT_END_F
### DELETE FROM jiangxu.t1
### WHERE
### @1=30 /* INT meta=0 nullable=0 is_null=0 */
### @2='a' /* VARSTRING(15) meta=15 nullable=1 is_null=0 */
### DELETE FROM jiangxu.t1
### WHERE
### @1=31 /* INT meta=0 nullable=0 is_null=0 */
### @2='a' /* VARSTRING(15) meta=15 nullable=1 is_null=0 */
### DELETE FROM jiangxu.t1
### WHERE
### @1=32 /* INT meta=0 nullable=0 is_null=0 */
### @2='a' /* VARSTRING(15) meta=15 nullable=1 is_null=0 */
# at 275
#140919 14:41:21 server id 16024 end_log_pos 302 Xid = 13
COMMIT/*!*/;
【从库】
# at 542
#140919 14:41:21 server id 16024 end_log_pos 601 Query thread_id=1 exec_time=253 error_code=0
SET TIMESTAMP=1411108881/*!*/;
BEGIN
/*!*/;
# at 601
# at 648
#140919 14:41:21 server id 16024 end_log_pos 648 Table_map: `jiangxu`.`t1` mapped to number 1168
#140919 14:41:21 server id 16024 end_log_pos 698 Delete_rows: table id 1168 flags: STMT_END_F
### DELETE FROM `jiangxu`.`t1`
### WHERE
### @1=30 /* INT meta=0 nullable=0 is_null=0 */
### @2='a' /* VARSTRING(15) meta=15 nullable=1 is_null=0 */
### DELETE FROM `jiangxu`.`t1`
### WHERE
### @1=31 /* INT meta=0 nullable=0 is_null=0 */
### @2='a' /* VARSTRING(15) meta=15 nullable=1 is_null=0 */
### DELETE FROM `jiangxu`.`t1`
### WHERE
### @1=32 /* INT meta=0 nullable=0 is_null=0 */
### @2='a' /* VARSTRING(15) meta=15 nullable=1 is_null=0 */
# at 698
#140919 14:41:21 server id 16024 end_log_pos 725 Xid = 25542
COMMIT/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

【主库flush logs,binlog_format='MIXED'】
【从库flush logs,binlog_format='ROW'】

注意动态修改从库binlog_format因为原session是MIXED,所以需要重建复制关系线程。
【主库】
# at 554
#140919 16:44:50 server id 16024 end_log_pos 625 Query thread_id=3 exec_time=0 error_code=0
SET TIMESTAMP=1411116290/*!*/;
BEGIN
/*!*/;
# at 625
#140919 16:44:50 server id 16024 end_log_pos 728 Query thread_id=3 exec_time=0 error_code=0
SET TIMESTAMP=1411116290/*!*/;
delete from t1 where c1 in (13,14,15)
/*!*/;
# at 728
#140919 16:44:50 server id 16024 end_log_pos 755 Xid = 44
COMMIT/*!*/;
【从库】
# at 296
#140919 16:44:50 server id 16024 end_log_pos 355 Query thread_id=3 exec_time=253 error_code=0
SET TIMESTAMP=1411116290/*!*/;
BEGIN
/*!*/;
# at 355
# at 402
#140919 16:44:50 server id 16024 end_log_pos 402 Table_map: `jiangxu`.`t1` mapped to number 1168
#140919 16:44:50 server id 16024 end_log_pos 452 Delete_rows: table id 1168 flags: STMT_END_F
### DELETE FROM `jiangxu`.`t1`
### WHERE
### @1=13 /* INT meta=0 nullable=0 is_null=0 */
### @2='a' /* VARSTRING(15) meta=15 nullable=1 is_null=0 */
### DELETE FROM `jiangxu`.`t1`
### WHERE
### @1=14 /* INT meta=0 nullable=0 is_null=0 */
### @2='a' /* VARSTRING(15) meta=15 nullable=1 is_null=0 */
### DELETE FROM `jiangxu`.`t1`
### WHERE
### @1=15 /* INT meta=0 nullable=0 is_null=0 */
### @2='a' /* VARSTRING(15) meta=15 nullable=1 is_null=0 */
# at 452
#140919 16:44:50 server id 16024 end_log_pos 479 Xid = 25570
COMMIT/*!*/;

在binlog_format=MIXED时候,哪种改变会被按照ROW进行记录到binlog,参考官方说明:

http://dev.mysql.com/doc/refman/5.5/en/binary-log-mixed.html

所以看得出在MIXED的状态下基本上对于主库的DDL操作无法按照行变化进行记录。

对于行变化的日志记录磁盘IO肯定要比语句复制消耗要大,可以根据架构酌情配置。

【MySQL】binlog_format以及binlog事务记录分析的更多相关文章

  1. mysql 正确清理binlog日志的两种方法

    前言: MySQL中的binlog日志记录了数据库中数据的变动,便于对数据的基于时间点和基于位置的恢复,但是binlog也会日渐增大,占用很大的磁盘空间,因此,要对binlog使用正确安全的方法清理掉 ...

  2. 监听MySQL的binlog日志工具分析:Canal

    Canal是阿里巴巴旗下的一款开源项目,利用Java开发.主要用途是基于MySQL数据库增量日志解析,提供增量数据订阅和消费,目前主要支持MySQL. GitHub地址:https://github. ...

  3. mysql 服务端事务和客户端事务对比分析

    之前做mysql事务测试的时候都是在mysql服务端存储过程里面包含事务. 例如: CREATE DEFINER=`root`@`localhost` PROCEDURE `Test`(out deb ...

  4. Mysql数据库之Binlog日志使用总结

    binlog二进制日志对于mysql数据库的重要性有多大,在此就不多说了.下面根据本人的日常操作经历,并结合网上参考资料,对binlog日志使用做一梳理: 一.binlog日志介绍1)什么是binlo ...

  5. (转)Mysql数据库之Binlog日志使用总结

    使用mysqlbinlog提取二进制日志 原文:http://blog.csdn.net/leshami/article/details/41962243 MySQL binlog日志记录了MySQL ...

  6. 1010针对一个binlog日志的分析

    针对一个BINLOG日志的分析 -- 当前binlog_format | ROW[root@109 mysql]# cat wang1010.txt/*!50530 SET @@SESSION.PSE ...

  7. MySQL 日志之 binlog 格式 → 关于 MySQL 默认隔离级别的探讨

    开心一刻 产品还没测试直接投入生产时,这尼玛... 背景问题 在讲 binlog 之前,我们先来回顾下主流关系型数据库的默认隔离级别,是默认隔离级别,不是事务有哪几种隔离级别,别会错题意了 1.Ora ...

  8. 【mysql】关于binlog格式

    写在前面的话 1.推荐用mixed,默认使用statement,基于上下文  set session/global binlog_format=mixed; 2.二进制日记录了数据库执行更改的操作,如 ...

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

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

随机推荐

  1. ADF_Database Develop系列1_通过UML数据库开发之建Logical UML Class Model

    2013-05-01 Created By BaoXinjian

  2. PLSQL_Oracle外部表的概念和使用(案例)

    2014-08-25 Created By BaoXinjian

  3. php之面向对象

    <?php declare(encoding='UTF-8'); class Site{ /*成员变量*/ var $url; var $title = "gunduzi" ...

  4. 键盘-App监听软键盘按键的三种方式

    前言:   我们在android手机上面有时候会遇到监听手机软键盘按键的时候,例如:我们在浏览器输入url完毕后可以点击软键盘右下角的“GO”按键加载url页面:在点击搜索框的时候,点击右下角的sea ...

  5. jquery点击改变class并toggle;jquery点击改变图片src源码并toggle;jquery显示隐藏toggle

    <html><head><meta charset="utf-8"><title></title><script ...

  6. linux下tomcat服务的启动、关闭与错误跟踪

    linux下tomcat服务的启动.关闭与错误跟踪,远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务: 1).启动tomcat服务 进入tomcat主目录下的bin目录,然后执行如下 ...

  7. 30天轻松学习javaweb_打包web项目成war

    jar -cvf news.war news 打包成 war 包后复制到webapps下,Tomcat将会解压.

  8. Translate this app.config xml to code? (WCF) z

    http://stackoverflow.com/questions/730693/translate-this-app-config-xml-to-code-wcf <system.servi ...

  9. 有人向我反馈了一个bug

    我是一个前端开发者,但我想这个故事对任何开发者都会引起共鸣的有人向你反馈了一个 bug. “26 楼会议室的灯亮着.它需要被熄灭.”bug 的备注里写道“你应该能在 5 分钟内搞定,只要按一下开关就好 ...

  10. vim操作笔记

    1.切换到下一个文件 假设要切换的文件名为 test.py :ex test.py 2.文档内复制命令 yy "复制光标所在行.或大写一个Y. 2yy "复制两行. y^ &quo ...