MySQL日誌 配置與檢視二進位制日誌

2021-07-07 05:07:16 字數 2238 閱讀 8983

二進位制日誌檔案的配置操作

二進位制日誌檔案包括了  hostname-bin.00000x  以及 hostname-bin.index,index這個是所有的二進位制日誌的索引檔案。

通過修改my.cnf檔案的方式來開啟二進位制日誌了。只要新增log_bin就可以開啟,其他的都使用預設。例如:

也可以通過set命令修改以實現立即生效而不用重啟服務

set  @@global.log_bin=1;

檢視二進位制日誌

1.檢視和分析二進位制日誌的結果

二進位制日誌檔案中就是二進位制的資料,因此不能直接使用文字命令或工具檢視,需要使用專門的工具。mysql自帶的mysqlbinlog就是乙個用於檢視二進位制日誌檔案的工具,使用方式如下:

mysqlbinlog  hostname-bin.00001   即直接將二進位制日誌檔案指定給該命令即可。

二進位制日誌中的每條記錄是從乙個 「at 數字」開始到乙個「at 數字」結束,之間是一條二進位制日誌記錄。每條記錄的end_log_pos的值與記錄結束的at後的值是一致的。

例如:

2.二進位制日誌的格式

show variables  like『%binlog%』; 結果中的binlog_format就是用來更改二進位制日誌的格式,預設為statement,這種預設格式中的二進位制日誌所記錄的是具體下達的修改資料的sql語句。還有兩種格式分別是row或mixed,row的格式是事務性或稱為行的二進位制日誌,會將當前對資料的操作以事務的方式記錄下來。mixed是基於row的,有可能是statement格式,也就是一種混合格式,但以row格式為主;例如資料庫中有的表使用myisam引擎,有的表使用innodb引擎,那麼myisam引擎的就會使用statement格式。

如果是replication環境,那麼binlog_format建議設定為row格式,即以事務的格式來記錄,並且replicaton環境要使用事務型引擎而不要使用非事務型引擎。

例如:set  global binlog_format=row  或 set binlog_format=row  (只設定當前會話的)

修改格式後的二進位制日誌不會建立新的檔案也不會影響之前的日誌,會在當前日誌檔案中繼續按照新的格式新增二進位制日誌。如果是row格式,那麼就是會將乙個事務以二進位制形式寫到日誌中,而不再是預設statement那種格式中是講sql語句以及相關資訊儲存在二進位制日誌中,row格式的是無法看懂的,即使使用mysqlbinlog工具也無法可讀,都是一些字母。如果要檢視row格式的日誌那麼需要mysqlbinlog 使用「-v」選項才可以 :  mysqlbinlog  -v localhost-bin.00002   這樣會將其中對事務的二進位制描述轉換為類似的sql的形式展示出來。

二進位制日誌對於觸發器所執行的操作也會記錄下來,反正所有對資料的修改都會記錄。但是如果二進位制日誌格式為statement格式則不會記錄觸發器所執行的操作,因為觸發器是編譯後的sql語句,而statement只記錄的是sql語句。因此如果是replicaton環境,則記得要修改二進位制日誌格式為row,因為row格式記錄的最完整。或者最好不要使用觸發器、儲存過程這些東西。

3.mysqlbinlog使用高階

介紹mysqlbinlog的可用選項,如下:

ø  --start-datetime=name

ø  --stop-datetime=name

ø  --j或--start-position=#

ø  --stop-position=#

以上引數分為兩組,可以以起止時間方式或起止編號的方式檢視某一段二進位制日誌。如果資料庫非常繁忙,那麼每秒都會產生非常多的二進位制日誌而start/stop-position的精確度只能到秒,因此可以通過start-position和stop-position的方式以某個操作的索引編號方式來檢視。乙個position段就是乙個事務的操作。

mysqlbinlog 檢視二進位制日誌

當bin log的模式設定為 row時 不僅日誌長得快 並且檢視執行的sql時 也稍微麻煩一點 1.干擾語句多 2生成sql的編碼需要解碼。binlog format row 直接mysqlbinlog出來的 檔案 執行sql部分的sql顯示為base64編碼格式 固生成sql記錄的時候 不能用常規...

mysql8二進位制日誌 MySQL檢視二進位制日誌

前提 檢視日誌的前提自然是要保證資料庫開啟了日誌,開始操作前我們需要檢查 mysql 的 log bin 引數,on 表示已開啟日誌,off 表示未開啟 如果該引數為 off,那麼可以放棄此次日誌檢視操作了,之前的操作並沒有日誌記錄 操作如下 mysql命令列中執行 show variables l...

mysql 二進位制日誌

如果mysql 伺服器啟用了二進位制日誌,你可以使用mysqlbinlog工具來恢復從指定的時間點開始 例如,從你最後一次備份 直到現在或另乙個指定的時間點的資料。mysqlbinlog 用於處理二進位制日誌檔案的實用工具 要想從二進位制日誌恢復資料,你需要知道當前二進位制日誌檔案的路徑和檔名。一般...