mysql 二進位制日誌

2021-09-08 01:30:37 字數 2413 閱讀 7099

1.日誌型別

二進位制日誌記錄了所有對mysql資料庫的修改事件,包括增刪改事件和對錶結構的修改事件。

2.配置使用二進位制日誌

在my.ini 配置

log-bin=mysql-bin

3.二進位制日誌格式

基於段的日誌格式

binlog_format=statement

記錄了操作的sql語句。

優點:日誌記錄量相對較小,節約磁碟及網路i/o,只對以一條記錄修改或插入row格式所產生日量小於段產生的日誌量。

缺點:必須記錄上下文資訊,保證語句在從伺服器上的執行結果和在主伺服器上相同。

特定函式如uuid,user()這樣非確定性的函式無法複製。

可能造成mysql複製的主備伺服器資料不一致,從而中斷複製鏈路。

顯示binlog 格式

show variables like 'binlog_format';

set session binlog_format=statement;

顯示二進位制日誌

show binary logs;

//重新整理日誌

flush logs;

在命令列下執行:

基於行的日誌格式

將my.ini 二進位制格式修改為binlog_format=row

row 的優點

row格式可以避免mysql複製**現主從不一致的問題,官方推薦這種格式。

同乙個sql語句修改了10000條資料的情況下。基於段的日誌只會記錄這個sql語句。基於行的日誌會有10000條記錄,分別記錄每一行資料的修改。

1.是mysql主從複製更加安全。

2.對每一行資料修改比基於段的複製高效。

如果誤操作修改了資料庫中的資料,同時沒有備份可以恢復時,我們就可以通過分析二進位制日誌,對日誌中記錄的資料修改操作做反向處理的方式來達到恢復資料的目的。

缺點:記錄日誌量較大

binlog_row_image=[full,minimal,noblob]

full : 記錄列的所有修改

minimal :只記錄修改的列。

noblob :如果是text型別或clob欄位,不記錄 這些日誌。

使用 mysqlbinlog -vv ../data/mysql-bin.000005 檢視明細日誌。

set session binlog_row_image=minimal

混合日誌格式:

binlog_format=mixed

特點:根據sql語句由系統決定在記錄端和基於行的日誌格式中進行選擇。

資料量大小由所執行的sql決定。

如何選擇二進位制格式

建議binlog_formart =mixed

orbinlog_format=row;

binlog_row_image=minimal;

4.複製方式:

1.基於sql語句的複製(sbr)

優點:生成日誌量少,節約網路傳輸的id.

並不要求對主從資料庫的表定義完全相同。

相比於基於行的複製方式更為靈活。

缺點:對於非確定事件,無法保證主從複製資料的一致性。

對於儲存過程,觸發器

2.基於行的複製(rbr)

優點:可以應用於任何sql的複製包括非確定性函式,儲存過程等。

可以減少資料庫鎖的使用。

缺點:要求主從資料庫的表結構相同,否則就會中斷複製。

5.複製工作方式

1.主伺服器將變更寫入二進位制日誌。

2.從讀取主的二進位制日誌變更並寫入到relay_log中。

基於日誌點的複製,基於gtid的複製。

3.在從上重放relay_log中的日誌。

基於sql端的日誌是在從庫上重新執行記錄的sql。

基於行的日誌則是在從庫上直接應用對資料行的修改。

mysql 二進位制日誌

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

MySQL日誌 二進位制日誌(1)

一 二進位制日誌的介紹 二進位制日誌的資料當然是二進位制形式了,所以無法直接通過文字工具來檢視,並且二進位制日誌也不是用來檢視的而是通常給mysql使用的。它記錄了對資料發生或潛在發生更改的sql語句。二進位制日誌的用途有如下幾點 可以記錄對資料庫所在的變更,包括ddl和dml語句。用於資料庫的增量...

mysql 二進位制日誌恢復

mysql開啟二進位制日誌記錄檔案 binary logging.log bin data0 mysql mybinlog.log sync binlog 1 innodb support xa 1 簡介 mysql的二進位制日誌可以說或是mysql最重要的日誌了,它記錄了所有的ddl和dml 除了...