mysql binlog日志信息查看
本文为学习binlog日志信息查看的个人操作流程。
mysql环境为本地。
mysql版本 8.0.21
表结构
CREATE TABLE `t` (
`id` int NOT NULL,
`a` int DEFAULT NULL,
`t_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `a` (`a`),
KEY `t_modified` (`t_modified`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
测试数据信息
insert into t values(1,1,'2018-11-13');
insert into t values(2,2,'2018-11-12');
insert into t values(3,3,'2018-11-11');
insert into t values(4,4,'2018-11-10');
insert into t values(5,5,'2018-11-09');
最后执行sql

ROW类型会记录执行sql的具体数据信息(方便对数据库数据进行恢复)


由于我们的binlog日志类型为ROW,event_type 类型中
table_map 用于说明接下来需要操作的表
delete_rows 用于说明操作类型为删除数据
update_rows 用于说明操作类型为更新数据
如果我们想看到详细的数据新需要借助mysqlbinlog工具
使用 -vv可以解析出各个字段的值(比如@1=1,@2=1,@3=1542038400)
--start-postion=2985 是从pos=2985位置开始查询
C:\ProgramData\MySQL\MySQL Server 8.0\Data>mysqlbinlog -vv LAPTOP-4JD0NCM3-bin.000065 --start-position=2985
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 156
#211014 0:19:11 server id 1 end_log_pos 125 CRC32 0x6a473648 Start: binlog v 4, server v 8.0.21 created 211014 0:19:11 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG '
/wZnYQ8BAAAAeQAAAH0AAAABAAQAOC4wLjIxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAD/BmdhEwANAAgAAAAABAAEAAAAYQAEGggAAAAICAgCAAAACgoKKioAEjQA
CigBSDZHag==
'/*!*/;
# at 2985
#211019 11:17:20 server id 1 end_log_pos 3035 CRC32 0xc11fd154 Table_map: `test`.`t` mapped to number 104
# at 3035
#211019 11:17:20 server id 1 end_log_pos 3149 CRC32 0x6a42ea93 Update_rows: table id 104 flags: STMT_END_F
BINLOG '
wDhuYRMBAAAAMgAAANsLAAAAAGgAAAAAAAEABHRlc3QAAXQAAwMDEQEAAgEBAFTRH8E=
wDhuYR8BAAAAcgAAAE0MAAAAAGgAAAAAAAEAAgAD//8AAQAAAAEAAABb6aOAAAEAAAAJAAAAW+mj
gAACAAAAAgAAAFvoUgAAAgAAAAkAAABb6FIAAAMAAAADAAAAW+cAgAADAAAACQAAAFvnAICT6kJq
'/*!*/;
### UPDATE `test`.`t`
### WHERE
### @1=1 /* INT meta=0 nullable=0 is_null=0 */
### @2=1 /* INT meta=0 nullable=1 is_null=0 */
### @3=1542038400 /* TIMESTAMP(0) meta=0 nullable=0 is_null=0 */
### SET
### @1=1 /* INT meta=0 nullable=0 is_null=0 */
### @2=9 /* INT meta=0 nullable=1 is_null=0 */
### @3=1542038400 /* TIMESTAMP(0) meta=0 nullable=0 is_null=0 */
### UPDATE `test`.`t`
### WHERE
### @1=2 /* INT meta=0 nullable=0 is_null=0 */
### @2=2 /* INT meta=0 nullable=1 is_null=0 */
### @3=1541952000 /* TIMESTAMP(0) meta=0 nullable=0 is_null=0 */
### SET
### @1=2 /* INT meta=0 nullable=0 is_null=0 */
### @2=9 /* INT meta=0 nullable=1 is_null=0 */
### @3=1541952000 /* TIMESTAMP(0) meta=0 nullable=0 is_null=0 */
### UPDATE `test`.`t`
### WHERE
### @1=3 /* INT meta=0 nullable=0 is_null=0 */
### @2=3 /* INT meta=0 nullable=1 is_null=0 */
### @3=1541865600 /* TIMESTAMP(0) meta=0 nullable=0 is_null=0 */
### SET
### @1=3 /* INT meta=0 nullable=0 is_null=0 */
### @2=9 /* INT meta=0 nullable=1 is_null=0 */
### @3=1541865600 /* TIMESTAMP(0) meta=0 nullable=0 is_null=0 */
# at 3149
#211019 11:17:20 server id 1 end_log_pos 3180 CRC32 0xcdf03b71 Xid = 359
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
ROW优缺点
优点:不会有主备数据不一致问题,最重要的是恢复数据方便。
缺点:占用空间(需要把每条数据修改记录),写入binlog时耗费IO资源。