Mysql 二进制日志及格式选择

服务层日志与Mysql使用的引擎(innodb、myisam)无关,

存储引擎层日志与引擎有关。

 

 

基于段的格式:

 

段格式记录的是所执行的SQL语句。

 通过 “ mysqlbinlog xxx文件  ” 命令可以查看binlog内容,下面是段格式binlog的内容,可以清楚看到执行的sql语句。

 

 基于行的格式:

Row格式带来的额外好处:

FULL:          记录一行中所有的字段,不管该字段是否被修改。

MINIMAL:    仅记录一行中产生了修改的字段。

NOBLOB:    类似于FULL,只是当BLOB或TEXT字段未被修改时,BLOB或TEXT字段不会被记录。

通过 “ mysqlbinlog -vv xxx文件  ” 命令可以查看 MINIMAL 类型的Row格式的binlog内容:

我们可以看到MINIMAL类型,只记录了进行了修改的@3这个字段的数据。

 

混合日志格式:

 

混合日志默认情况都会使用 基于段的格式去记录,

但如果是碰到SQL中使用了不确定函数(类似于UUID()函数),或者数据库隔离级别被修改成了读已提交 或读未提交,则会使用基于ROW的格式。

如果隔离级别被修改成了读已提交 或读未提交,那么混合日志格式就基本上都会去使用基于ROW格式去记录了。

 

建议:

  • 同一IDC机房:  使用ROW格式,并配置MINIMAL
  • 不同机房:    使用混合日志格式

posted on 2018-06-04 19:14  HB1  阅读(271)  评论(0)    收藏  举报

导航