MySQL 只要或排除 Replication 某DB 的設定方式

MySQL Replication 預設是將所有設定都同步到 Slave,只想要將某些資料庫同步,或者某些資料庫不要同步,要怎麼做呢?

MySQL 只要或排除 Replication 某DB 的設定方式

MySQL 設定 Replication 白名單 或 黑名單 的方式,在此以白名單為主(只允許 DB_NAME Replication):

  • CLI 語法:mysql> CHANGE REPLICATION FILTER REPLICATE_DO_DB= (`DB_NAME`);

不過 13.4.2.2 CHANGE REPLICATION FILTER Statement 裡面有說:

  • The effects of the statement are not persistent; any filters set using CHANGE REPLICATION FILTER are lost following a restart of the replica mysqld.
  • 所以若資料庫重新啟動,這些設定就會跑掉

於是要將此設定寫到 DB Master 的 my.cnf 裡面,設定檔:

[mysqld]
binlog_do_db=DB_NAME # 白名單,只有 sync 這個資料庫 (多個用 , 分隔)

binlog_ignore_db=DB_NAME # 黑名單

重新啟動 MySQL 後,可以看到下述狀態:

(root@localhost) [(none)]> show master status \G
*************************** 1. row ***************************
            File: mysql-bin.000001
        Position: 157
    Binlog_Do_DB: DB_NAME
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料