【Mysql】- binlog 日志解析

2022年10月27日13:13:16

binary log 简介

二进制日志包含描述数据库更改的“事件”,例如表创建操作或表数据更改。它还包含可能已更改的语句的事件(例如:DELETE不匹配任何行),除非使用基于行的日志记录。二进制日志还包含有关每条语句使用更新数据多长时间的信息。二进制日志有两个重要用途:

  • 对于复制,复制源服务器上的二进制日志提供了要发送到副本的数据更改的记录。将源服务器二进制日志中包含的事件发送到其副本,副本执行这些事件以进行与源上相同的数据更改。

  • 某些数据恢复操作需要使用二进制日志。恢复备份后,将重新执行备份后记录的二进制日志中的事件。这些事件使数据库从备份点开始更新。

环境准备

  • Ubuntu 18.04.2 LTS
  • mysql 5.7.28

更改配置

添加如下配置 开启binlog

[mysqld]
...
server-id=123123
log-bin=/var/lib/mysql/mysql-bin # 日志文件位置及前缀 
binlog-format=ROW #  日志格式 [MIXED|STATEMENT|ROW]

操作数据

# 创建数据库createdatabase test_dbcreatedatabase test2_db# 分别创建表并插入数据CREATETABLE`cms_help`(`id`bigint(20)NOTNULLAUTO_INCREMENT,`category_id`bigint(20)DEFAULTNULL,`icon`varchar(500)DEFAULTNULL,`title`varchar(100)DEFAULTNULL,`show_status`int(1)DEFAULTNULL,`create_time`datetimeDEFAULTNULL,`read_count`int(1)DEFAULTNULL,`content`text,PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8COMMENT='帮助表';# 插入数据INSERTINTO cms_help(category_id)VALUES(111),(222),(333),(444);# 执行查询SELECT*FROM cms_help;# 执行删除 匹配行DELETEFROM cms_helpWHERE id=2;# 执行删除 不匹配任何行DELETEFROM cms_helpWHERE id=2;# 执行更新UPDATE cms_helpSET  show_status=1WHERE id=3;# 执行更新 不匹配行UPDATE cms_helpSET  show_status=1WHERE id=2;# 执行alert tableALTERTABLE`cms_help` CHANGECOLUMN`title``title_t`varchar(100);# 执行dropdroptable cms_help;

查看binlog信息

show binary logs;

【Mysql】- binlog 日志解析

查看binlog

我们采用官方提供的mysqlbinlog对文件进行查看

mysqlbinlog /var/lib/mysql/mysql-bin.000001  --base64-output=decode-rows -vv --skip-gtids=true  | grep -E "UPDATE cms_help|SELECT * FROM|INSERT INTO cms_help|DELETE FROM cms_help|CREATE TABLE \`cms_help\`|alter"
  • --base64-output=decode-rows : 声明二级制文件格式化格式 后面加上–verbose可将事件解码为带注释的伪SQL语句
  • --verbose: -v 重组行事件之外的伪SQL语句, -vv重组包括行事件和statement事件的伪sql语句
  • --skip-gtids=true: 不保留全局事务标识符,而是让服务器像执行新事务一样执行事务。

格式化查看结果如下:
【Mysql】- binlog 日志解析

由图中展示可知,binary log记录了对表的增删改以及数据行的增删改,且在删改行无匹配行时不进行记录,改表时无匹配行时有记录。

除此之外还有很多需要注意的点,比如--binlog-do-db=db_name设置记录指定数据库时候的跨库记录问题,mysqlbinlog --database指定数据库打印,是仅适用于没有基于行的事件的BINLOG等。

参考链接:https://dev.mysql.com/doc/refman/5.7/en/replication-options-binary-log.html

  • 作者:生如夏花般绚丽
  • 原文链接:https://blog.csdn.net/rrtfwq/article/details/122463979
    更新时间:2022年10月27日13:13:16 ,共 1872 字。