mysql binlog日誌(一)概述

2021-09-28 15:17:02 字數 1651 閱讀 3823

mysql支援多種binlog event。參考binlog_event.h::log_event_type資料結構,常見的binlog evevnt有以下幾種,後續會詳細講解這些event內容

format_description_event

query_event:

stop_event:

rotate_event:

table_map_event:

write_rows_event:

update_rows_event:

delete_rows_event:

gtid_log_event

每個binlog由4部分組成:

header: 固定長度19位元組。所有event的格式都是相同。主要內容如下:

內容           offset:length

// timestamp         0:4             

// type_code         4:1  

// server_id           5:4

// event_length     9:4

// next_position    13:4

// flags                  17:2  

post-header: 每種event的長度和格式固定。根據format_description_event獲取每種型別的長度。

pay_load: event的實際內容,同一種的event的內容和長度也可能不同。需要根據實際內容進行解析。

footer: 如果該binlog支援checksum(根據format_description_event確定是否支援,目前只支援crc32校驗),4位元組的checksum值。

對應的主要資料結構:

以query_log_event為例,主要繼承2個類,binary_log_event和log_event

binary_log_event^|

|query_event  log_event

\                /

<>\             /

\         /

query_log_event

binary_log_event:

log_event_header m_header;  對應binlog header部分

log_event_footer m_footer;  對應binlog footer部分

query_event: 事件解析後的各個變數

log_event:  對event可以執行的一些操作函式,主要有:

read_log_event:從binlog或者relay log讀取event

根據event的type呼叫特定事件的建構函式:通過傳送buf和event _len構造對應的事件

print:列印binlog事件。mysqlbinlog等工具會用到

其他型別的事件都類似.  對外介面類為型別_log_event,  該類派生自2個類:乙個表示event的組成; 另乙個表示該event支援的操作

mysql binlog日誌刪除

隨著mysql的執行,其binlog日誌會越來越多,占用的磁碟會越來越大。我們需要定期清理這些過期的binlog日誌。處理方法主要有兩種 1 自動刪除 2 手動刪除 1 自動刪除 a,修改my.cnf引數 需要更改其配置檔案my.cnf,新增引數expire logs days 10,單位是天。b,...

壓縮mysql binlog日誌

伺服器硬碟太貴了 mysql的binlog日誌增長太快了 需要定時壓縮一下 然後清除 清除步驟 建立清除shell vim bzbinlog.sh bin sh tar jcvpf date mysqlbinlogdir mysql bin.000108.tar.bz2 usr local mysq...

mysql binlog日誌刪除

今天發現磁碟被佔滿,檢查後是binlog日誌占用太多,所以刪除下 mysql的binlog日誌介紹 binlog是mysql以二進位制形式列印的日誌,它預設不加密,不壓縮。binlog二進位制日誌包含了所有更新了資料或者已經潛在更新了資料 例如,沒有匹配任何行的乙個delete 的所有語句。語句以 ...