码迷,mamicode.com
首页 > 数据库 > 详细

mysql原理~binlog系列之~event浅谈

时间:2019-09-08 10:05:47      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:事务   sch   开头   相关信息   ids   添加   根据   comm   top   

一 将具体分析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展开多维度的统计 

 本文参考八怪大神的系列课程文章,

 

mysql原理~binlog系列之~event浅谈

标签:事务   sch   开头   相关信息   ids   添加   根据   comm   top   

原文地址:https://www.cnblogs.com/danhuangpai/p/11484306.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!