248
技術社區[雲棲]
【文檔】Mysql BinLog概述
Binlog是一係列日誌文件,他們包含的內容是Mysql數據內容的改變。如果想開啟binlog功能,需要在啟動時帶上--log-bin參數。
binlog是從Mysql3.23.14版本開始的。它包含所有更新數據的sql語句。它還包含可能更新數據的語句(比如,刪除不存在的數據行的語句),除非日誌的記錄是以基於行的。sql語句是以描述修改的事件形式存儲的。binlog也包含每個語句的執行時間。
binlog還包含其他的一些源數據,比如:
- 語句執行時,服務器的狀態信息,以便用於正確的重新成功執行語句
- 錯誤碼
- 為了維持binlog文件的連續性所需要的元數據(比如,rotate事件)
binlog文件是服務器在執行sql語句過程中整體狀態的情況跟蹤。它包含的事件描述了狀態的變化。更精確的是,binlog事件描述的事件可以被用來重現服務器當時的狀態改變。
binlog文件有兩個重要的目的:
- 為了主從複製,binlog文件是master服務器記錄的,會被發送給slave服務器。很多binlog的格式細節和處理是用於這個目的的。master服務器發送binlog文件中的事件給slave服務器,然後slave服務器執行這些事件,最終達到的目標就是保證slave服務器的數據變化與master一致。slave服務器在執行這些事件之前,會把這些事件存儲在本地的relay log中。relay log的格式與binlog一樣。
- 某些數據恢複操作需要使用binlog。在備份文件恢複後,binlog中的事件會重新執行。這些事件會讓數據庫的數據回到備份時間點。
目前有兩種類型的binlog:
- 基於語句的:包含sql語句的事件(insert、update、delete)
- 基於行的:描述每一行的數據變化的事件
混合的日誌默認使用的是基於語句的記錄方式,在必要時會切換到基於行的記錄方式。基於行的記錄方式從Mysql 5.1版本開始支持。
mysqlbinlog工具可以把binlog或者relay log日誌以可讀的方式打印出來。
最後更新:2017-10-08 14:33:16