MySQL之二进制日志
一、Binlog日志格式
根据日志定义的格式不一样,可以分为Statement格式、Row格式或者MIXED格式
mysql5.6----》
| binlog_format | STATEMENT |
mysql5.7---》
| binlog_format | ROW |
理解三种不同的格式
A: Statement格式
说明:基于语句的,记录操作的sql语句
优点:
缺点:
(以上格式不推荐使用,但是在mysql5.7以前都是默认的格式)
B: Row格式
说明: 记录操作的每一行数据
优点:
缺点:
(推荐使用)
从mysql5.7之后,默认的格式为Row格式
Table_map: 记录表的元数据信息
ROWS_EVENT分为三种:WRITE_ROWS_EVENT,UPDATE_ROWS_EVENT,DELETE_ROWS_EVENT,分别对应insert,update和delete操作。
[root@node8 m_data]# mysqlbinlog master-bin.000004 -vv
### INSERT INTO `mydb`.`parent`
### SET
### @1=10 /* INT meta=0 nullable=1 is_null=0 */
### INSERT INTO `mydb`.`parent`
### SET
### @1=20 /* INT meta=0 nullable=1 is_null=0 */
### INSERT INTO `mydb`.`parent`
### SET
### @1=30 /* INT meta=0 nullable=1 is_null=0 */
@1表示列1的值
C: MIXED格式
说明:混合使用Row和Statement格式,对DDL记录会使用Statement,对于table里的行操作会记录Row格式
如果是Innodb表,事务级别为Read committed 或者 read uncommitted日志级别只能使用Row格式
(一般不推荐使用Mixed格式)
优质内容筛选与推荐>>