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) 
想在手机阅读更多MySQL资讯?下载【香港硅谷】Android应用
分享到Facebook