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)