一 将具体分析binlog中的常用event
二 Row格式事件核心
ROW_LOG_EVENT+TABLE_MAP_EVENT+GTID_EVENT
三 event生效机制
在binlog cache中生效,然后刷新纪录写入binlog中
四 具体event 内容
0 FORMAT_DESCRIPTION_EVENT
1 PREVIOUS_GTIDS_LOG_EVENT
2 GTID_LOG_EVENT
3 TABLE_MAP_EVENT
4 ROW_LOG_EVENT
5 QUERY_EVENT ()
6 XID_EVENT
7 ROTATE_EVNET
8 STOP_EVENT
五 详解
0 FORMAT_DESCRIPTION_EVENT
在binlog文件开头记载binlog相关的版本和其他一些信息
1 PREVIOUS_GTIDS_LOG_EVENT
记载之前所有binlog的GTID集合,作用是为了加快扫描速度
2 GTID_LOG_EVENT
记载关于GTID的相关信息,并且携带last commited和seq number 用来并行回放
3 QUERY_EVENT
在Row格式下只记录DDL原始语句
4 TABLE_MAP_EVENT
用于描述表的内部ID和结构定义。
核心
table_id , table_name schema name length col count col type
实例
Table_map: `yzs`.`t1` TABLE_ID: ‘23‘
5 ROW_LOG_EVENT
在Row格式下记录了事物语句的具体内容
6 XID_EVENT
当事务提交时,不论是statement还是row格式的binlog都会添加一个XID_EVENT作为事务的结束。该事件记录了该事务的ID。在mysql进行崩溃恢复时根据binlog中提交的情况来决定是否提交存储引擎中prepared状态的事务。
包含以下事件
WRITE_ROWS_EVENT,UPDATE_ROWS_EVENT, DELETE_ROWS_EVENT
7 ROTATE_EVENT
当binlog文件大小达到max_binlog_size参数设置的值或执行flush logs命令时,binlog发生切换,这时会在当前使用的binlog文件末尾添加一个ROTATE_EVENT事件,将下一个binlog文件的名称和位置记录到该事件中。
8 STOP_EVENT
当MySQL服务停止时,会在当前binlog文件尾添加一个STOP_EVENT事件表示数据库的停止
六 总结
知道了这些事件的意义,我们可以根据这个对binlog展开多维度的统计
本文参考八怪大神的系列课程文章,
原文地址:https://www.cnblogs.com/danhuangpai/p/11484306.html