解析MySQL binlog --(6)XID_EVENT、ROTATE_EVENT及stop
阿新 • • 發佈:2018-03-25
mysql binlog xid 1、XID_EVENT
4、代碼
當事務提交時,不論是statement還是row格式的binlog都會添加一個XID_EVENT作為事務的結束。該事件記錄了該事務的ID。在mysql進行崩潰恢復時根據binlog中提交的情況來決定是否提交存儲引擎中prepared狀態的事務。
2、ROTATE_EVENT
當binlog文件大小達到max_binlog_size參數設置的值或執行flush logs命令時,binlog發生切換,這時會在當前使用的binlog文件末尾添加一個ROTATE_EVENT事件,將下一個binlog文件的名稱和位置記錄到該事件中。
3、STOP_EVENT
當MySQL服務停止時,會在當前binlog文件尾添加一個STOP_EVENT事件表示數據庫的停止。該事件僅包括一個公有事件頭,沒有私有事件頭和事件體。只需要公有事件頭的event type就可以了。
Xid_log_event::write Log_event::write_header wrapper_my_b_safe_write(file, (uchar*) &xid, sizeof(xid)) write_footer(file))//checksum Rotate_log_event::write write_header(file, ROTATE_HEADER_LEN + ident_len) wrapper_my_b_safe_write(file, (uchar*) buf, ROTATE_HEADER_LEN) wrapper_my_b_safe_write(file, (uchar*) new_log_ident,(uint) ident_len) write_footer(file))
解析MySQL binlog --(6)XID_EVENT、ROTATE_EVENT及stop