複製過濾器:僅複製有限一個或幾個數據庫相關的數據,而非全部;由複製過濾器進行;sql
有兩種過濾方式,在主服務器上進行過濾或者是在從服務器上進行過濾
數據庫
(1) 主服務器上過濾服務器
實現有選擇的複製,只複製主節點上的一部分,從源頭上選擇幾個庫主節點過濾,寫入二進制日誌的時候有選擇,影響其餘庫的時間點還原網絡
主服務器僅向二進制日誌中記錄有關特定數據庫相關的寫操做;ide
問題:其它庫的time-point recovery將無從實現,影響其餘庫的時間點還原; spa
主節點上使用如下的選項,如下是黑白名單,同一庫兩者選其一便可線程
binlog_do_db= #白名單,向binlog中寫入哪些庫的二進制log,多個庫名用逗號分隔日誌
binlog_ignore_db=#黑名單,此處寫入的庫不記錄二進制log,多個庫用逗號隔開進程
可是這裏有個問題是,若是某個庫故障,要還原的時候就會出問題,因此通常不在主節點上過濾,主節點建議將全部的庫都寫入二進制日誌。事件
(2) 從服務器上過濾
從服務器的SQL THREAD僅重放關注的數據庫或表相關的事件,並將其應用於本地;
問題:會消耗更多的網絡IO和磁盤IO;
重放庫的選擇:
Replicate_Do_DB=
Replicate_Ignore_DB=
重放表的選擇:
Replicate_Do_Table=
Replicate_Ignore_Table=
這兩個和上面兩個相似,下面的表可使用通配符
Replicate_Wild_Do_Table=
Replicate_Wild_Ignore_Table=
若是同一庫既被容許,又被拒絕,則該庫將被複制
例子
假設主服務器上有一個庫爲sunnydb,可是從服務器重放時不重放該數據庫,所以在從服務器73上設定以下,
注意,設定前要先關閉slave進程
MariaDB [test2]> stop slave;
MariaDB [test2]> set @@global.Replicate_ignore_DB=sunnydb;#該參數建議寫入配置文件,不然下次重啓就會失效
那麼在主服務器71上建立數據庫sunnydb,該庫的全部二進制信息都會被複制到從服務器的slave_log,可是都不會被從服務器73上的sql線程重放sunnydb庫的數據。