首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL Binlog 事件類型深度解析:QUERY_EVENT、ROWS_EVENT、GTID、ROTATE、XID、STOP、FORMAT_DESCRIPTION 完整圖譜

     編輯:MySQL 資料庫相關知識

核心事件類型枚舉(源碼 binlog_event.h)

MySQL 5.7 定義 39 種事件(ENUM_END_EVENT 為結束標記),常見關鍵事件:

事件常量代碼觸發場景備註
FORMAT_DESCRIPTION_EVENT15Binlog 文件首事件替代舊版 START_EVENT_V3,含 Server 版本、Binlog 版本、創建時間
QUERY_EVENT2STATEMENT 格式 DML、DDL、BEGIN文本記錄 SQL
WRITE_ROWS_EVENT30ROW 格式 INSERT含完整行數據
UPDATE_ROWS_EVENT31ROW 格式 UPDATE含修改前/後值
DELETE_ROWS_EVENT32ROW 格式 DELETE僅主鍵或全列
TABLE_MAP_EVENT19ROW 事件前映射表 ID關聯 table_id → db.tbl
XID_EVENT16事務提交崩潰恢復判斷依據
GTID_LOG_EVENT33GTID 模式下每事務分配格式:SET @@SESSION.GTID_NEXT='uuid:seq'
PREVIOUS_GTIDS_LOG_EVENT35Binlog 文件首,累積前序 GTID重啟時重建 gtid_executed
ROTATE_EVENT4Binlog 切換(達 max_binlog_size/flush logs)指向下一文件名+位置
STOP_EVENT3Server 正常關閉標記文件結束
INCIDENT_EVENT26主庫異常(如磁盤滿)從庫感知停止複制
HEARTBEAT_LOG_EVENT27主庫空閒發送心跳保持連接存活

實戰觀測指令

SHOW BINLOG EVENTS IN 'mysql-bin.000021'\G;
-- 或
mysqlbinlog -vv --base64-output=decode-rows mysql-bin.000021

典型事件流示例

STATEMENT 格式事務

Format_desc (pos 4)
Query: BEGIN (pos 120)
Query: INSERT ... (pos 195)
Xid: COMMIT (pos 298)

ROW 格式事務

Format_desc
Query: BEGIN
Table_map: table_id=80 (test.t1)
Write_rows: table_id=80 flags=STMT_END_F
Xid: COMMIT
Query: BEGIN
Table_map: table_id=80
Update_rows: table_id=80
Xid: COMMIT
Query: BEGIN
Table_map: table_id=80
Delete_rows: table_id=80
Xid: COMMIT

GTID 模式

Previous_gtids: uuid:1
Gtid: SET @@SESSION.GTID_NEXT='uuid:2'
Query: BEGIN
Query: INSERT ...
Xid: COMMIT
Gtid: SET @@SESSION.GTID_NEXT='uuid:3'
Query: BEGIN
Query: INSERT ...
Xid: COMMIT
Rotate: mysql-bin.000034 pos=4

關鍵洞察

  • QUERY_EVENT 同時服務於 STATEMENT DML、ROW DDL、事務邊界(BEGIN)。
  • ROW 事件 非文本,需 mysqlbinlog -vv --base64-output=decode-rows 解碼查看。
  • XID_EVENT 是事務持久化的標誌,崩潰恢復時 InnoDB 檢查 Binlog 中是否有 XID 決定是否提交 Prepared 事務。
  • GTID 事件鏈 保證全局事務有序,**Previous_GTIDs = 上一文件 Previous_GTIDs + 本文件所有 GTID**,重啟時單點恢復 gtid_executed。
  • ROTATE/STOP 為 Binlog 文件邊界管理服務,配合 max_binlog_size、expire_logs_days 實現自動輪轉清理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved