【文檔】一、Mysql BinLog概述

Binlog是一系列日志文件,他們包含的內(nèi)容是Mysql數(shù)據(jù)內(nèi)容的改變。如果想開啟binlog功能,需要在啟動時帶上--log-bin參數(shù)。

binlog是從Mysql3.23.14版本開始的。它包含所有更新數(shù)據(jù)的sql語句。它還包含可能更新數(shù)據(jù)的語句(比如,刪除不存在的數(shù)據(jù)行的語句),除非日志的記錄是以基于行的。sql語句是以描述修改的事件形式存儲的。binlog也包含每個語句的執(zhí)行時間。

binlog還包含其他的一些源數(shù)據(jù),比如:

  • 語句執(zhí)行時,服務(wù)器的狀態(tài)信息,以便用于正確的重新成功執(zhí)行語句
  • 錯誤碼
  • 為了維持binlog文件的連續(xù)性所需要的元數(shù)據(jù)(比如,rotate事件)

binlog文件是服務(wù)器在執(zhí)行sql語句過程中整體狀態(tài)的情況跟蹤。它包含的事件描述了狀態(tài)的變化。更精確的是,binlog事件描述的事件可以被用來重現(xiàn)服務(wù)器當(dāng)時的狀態(tài)改變。

binlog文件有兩個重要的目的:

  • 為了主從復(fù)制,binlog文件是master服務(wù)器記錄的,會被發(fā)送給slave服務(wù)器。很多binlog的格式細節(jié)和處理是用于這個目的的。master服務(wù)器發(fā)送binlog文件中的事件給slave服務(wù)器,然后slave服務(wù)器執(zhí)行這些事件,最終達到的目標就是保證slave服務(wù)器的數(shù)據(jù)變化與master一致。slave服務(wù)器在執(zhí)行這些事件之前,會把這些事件存儲在本地的relay log中。relay log的格式與binlog一樣。
  • 某些數(shù)據(jù)恢復(fù)操作需要使用binlog。在備份文件恢復(fù)后,binlog中的事件會重新執(zhí)行。這些事件會讓數(shù)據(jù)庫的數(shù)據(jù)回到備份時間點。

目前有兩種類型的binlog:

  • 基于語句的:包含sql語句的事件(insert、update、delete)
  • 基于行的:描述每一行的數(shù)據(jù)變化的事件

混合的日志默認使用的是基于語句的記錄方式,在必要時會切換到基于行的記錄方式?;谛械挠涗浄绞綇腗ysql 5.1版本開始支持。

mysqlbinlog工具可以把binlog或者relay log日志以可讀的方式打印出來。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容