mysql原理~binlog系列之~event淺談


一 將具體分析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展開多維度的統計 

 本文參考八怪大神的系列課程文章,

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM