binlog_event.h)MySQL 5.7 定義 39 種事件(ENUM_END_EVENT 為結束標記),常見關鍵事件:
| 事件常量 | 代碼 | 觸發場景 | 備註 |
|---|---|---|---|
| FORMAT_DESCRIPTION_EVENT | 15 | Binlog 文件首事件 | 替代舊版 START_EVENT_V3,含 Server 版本、Binlog 版本、創建時間 |
| QUERY_EVENT | 2 | STATEMENT 格式 DML、DDL、BEGIN | 文本記錄 SQL |
| WRITE_ROWS_EVENT | 30 | ROW 格式 INSERT | 含完整行數據 |
| UPDATE_ROWS_EVENT | 31 | ROW 格式 UPDATE | 含修改前/後值 |
| DELETE_ROWS_EVENT | 32 | ROW 格式 DELETE | 僅主鍵或全列 |
| TABLE_MAP_EVENT | 19 | ROW 事件前映射表 ID | 關聯 table_id → db.tbl |
| XID_EVENT | 16 | 事務提交 | 崩潰恢復判斷依據 |
| GTID_LOG_EVENT | 33 | GTID 模式下每事務分配 | 格式:SET @@SESSION.GTID_NEXT='uuid:seq' |
| PREVIOUS_GTIDS_LOG_EVENT | 35 | Binlog 文件首,累積前序 GTID | 重啟時重建 gtid_executed |
| ROTATE_EVENT | 4 | Binlog 切換(達 max_binlog_size/flush logs) | 指向下一文件名+位置 |
| STOP_EVENT | 3 | Server 正常關閉 | 標記文件結束 |
| INCIDENT_EVENT | 26 | 主庫異常(如磁盤滿) | 從庫感知停止複制 |
| HEARTBEAT_LOG_EVENT | 27 | 主庫空閒發送心跳 | 保持連接存活 |
SHOW BINLOG EVENTS IN 'mysql-bin.000021'\G; -- 或 mysqlbinlog -vv --base64-output=decode-rows mysql-bin.000021
Format_desc (pos 4) Query: BEGIN (pos 120) Query: INSERT ... (pos 195) Xid: COMMIT (pos 298)
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
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
mysqlbinlog -vv --base64-output=decode-rows 解碼查看。gtid_executed。max_binlog_size、expire_logs_days 實現自動輪轉清理。