MySQL的binlog_row_image参数学习
1 背景知识
MySQL的binlog格式有三种,分别是STATEMENT
、MIXED
和ROW
,各有优劣。binlog_row_image
这个参数是在MySQL 5.6版本新增加的参数,它有三个取值:FULL
、MINIMAL
和NOBLOB
,默认取值是FULL
。要使用binlog_row_image
参数,binlog的格式必须是MIXED
或ROW
,不可以是STATEMENT
格式。
1.1 名词解释
- 前镜像:数据库表中修改前的内容。
- 后镜像:数据库表中修改后的内容。
2 实验binlog_row_image的不同值
2.1 binlog_row_image = FULL
-
实验表有主键约束
CREATE TABLE 'test1' ( 'id' int(11) NOT NULL, 'name' varchar(10) DEFAULT NULL, primary key('id') ); INSERT into test1 values(1,'jack'),(2,'mary'); UPDATE test1 SET name='bob' WHERE id=2;
解析binlog:
mysqlbinlog --no-defaults --base64-output=DECODE-ROWS -v /home/mysql/mysql-bin.000196 >/home/mysqlbin_1.txt
查看记录镜像信息如下:
### UPDATE 'test1','test1' ### WHERE ### @1=2 ### @2='mary' ### SET ### @1=2 ### @2='bob'