服务层日志与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
不同机房: 使用混合日志格式