写点什么

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

update t set a = 9 where id < 4;


  1. 首先查看自己 binlog 日志记录类型

show variables like 'binlog_format';


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

  1. 使用以下命令可以查看最新的 binlog 文件信息(获取 binlog 的文件名称)

show master status;

  1. 查看 binlog 日志内容

show binlog events in 'LAPTOP-4JD0NCM3-bin.000065';


由于我们的 binlog 日志类型为 ROW,event_type 类型中

  • table_map 用于说明接下来需要操作的表

  • delete_rows 用于说明操作类型为删除数据

  • update_rows 用于说明操作类型为更新数据

如果我们想看到详细的数据新需要借助 mysqlbinlog 工具

  1. 查看 binlog 详细信息。

mysqlbinlog -vv LAPTOP-4JD0NCM3-bin.000065 --start-position=2985

ps: 执行命令前需要设置 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 '/wZnYQ8BAAAAeQAAAH0AAAABAAQAOC4wLjIxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/BmdhEwANAAgAAAAABAAEAAAAYQAEGggAAAAICAgCAAAACgoKKioAEjQACigBSDZHag=='/*!*/;# 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+mjgAACAAAAAgAAAFvoUgAAAgAAAAkAAABb6FIAAAMAAAADAAAAW+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 = 359COMMIT/*!*/;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 资源。

用户头像

梁小航航

关注

还未添加个人签名 2019.01.23 加入

爱而不得的人

评论

发布
暂无评论
mysql binlog日志信息查看