二進位制日誌過濾器可以通過兩個選項從二進位制日誌中過濾語句:binlog-do-db和binlog-ignore-db
一,binlog-do-db
使用 binlog-do-db=db_name。使用這個選項後,主伺服器會判斷當前的資料庫(即use選定的資料庫)是否是db_name,如果是,則會將更新記錄到二進位制日誌中。在使用之後,其它所有沒有明顯指定的資料庫 都會被忽略。如果使用該選項,你應確保只對當前的資料庫進行更新。
在我伺服器上有兩個資料庫,乙個db_factory,另乙個是db_user。在沒有使用這個選項之前,對兩個資料庫的更新操作都是立即會複製到從庫上的,但設定
binlog-do-db=db_factory
之後,對db_user的改動,都不會被從庫所複製。所以如果不是特別有需求,最好不要設定這個選項。當然如果是乙個資料庫經常更新,其它的都是一樣的本地資料庫,可以不用於二進位制日誌的後續操作的情況下,作為一種優化手段,也是可以的。
乙個需要特別注意的地方是,如果設定binlog-do-db=db_factory。但後續使用如下語句:
use db_user
insert into db_factory.employ ...........
此時,更新是不會被二進位制日誌所接收的。
二,binlog-ignore-db
表示忽略某個特定的資料庫,而對其它資料庫進行複製的選項。其實上面的選項是表示「忽略其他資料庫,只記錄我進入日誌」,而這個選項可以表「忽略我,將其它資料庫記錄日誌」,對這外選項的使用,可以如下所示:
[mysqld]
binlog-ignore-db=db_factory
binlog-ignore-db=db_user
當然上面的binlog-do-db也可以使用多次記錄多個表需要被寫入二進位制日誌。
三,選項規則
有一些規則(binlog-do-db或binlog-ignore-db或二者都有)。當前有乙個資料庫,也就是是否用use命令選擇資料庫?
沒有:不要寫入語句,並退出。
有:執行下一步。
有當前的資料庫。是否有binlog-do-db規則?
有:當前的資料庫是否匹配binlog-do-db規則? 如果是,則寫入並退出,如果不是,不寫入並退出。
沒有:執行下一步。
有一些binlog-ignore-db規則。當前的資料庫是否匹配binlog-ignore-db規則?
有:不要寫入語句,並退出。
沒有:寫入查詢並退出。
從上面的流程邏輯可以知道,如果binlog-do-db被設定了,binlog-ignore-db將會被忽略。
另外,在這兩個選項的應用過程中,要注意的是當前資料庫的選擇是通過use來選擇,這一點很重要。
mysql 二進位制日誌
如果mysql 伺服器啟用了二進位制日誌,你可以使用mysqlbinlog工具來恢復從指定的時間點開始 例如,從你最後一次備份 直到現在或另乙個指定的時間點的資料。mysqlbinlog 用於處理二進位制日誌檔案的實用工具 要想從二進位制日誌恢復資料,你需要知道當前二進位制日誌檔案的路徑和檔名。一般...
mysql 二進位制日誌
1.日誌型別 二進位制日誌記錄了所有對mysql資料庫的修改事件,包括增刪改事件和對錶結構的修改事件。2.配置使用二進位制日誌 在my.ini 配置 log bin mysql bin 3.二進位制日誌格式 基於段的日誌格式 binlog format statement 記錄了操作的sql語句。優...
啟用二進位制日誌
1.開啟配置檔案 sudo vi etc my.cnf 2.編輯配置檔案 log bin data mysql binlogs server1 日誌生成位置 server id 100 主從時要唯一,設定要注意 3.重啟mysql服務 sudo systemctl restart mysql 4.驗...