1、过滤复制实现方式
官网说明
https://dev.mysql.com/doc/refman/5.7/en/change-replication-filter.html
博客
https://blog.csdn.net/weixin_42097967/article/details/113670356
主库实现
说明: 主库是通过是否 记录binlog来控制过滤, 只记录需要过滤复制的库相关binlog (不推荐)show master status;Binlog_Do_DBBinlog_Ignore_DB
从库实现
IO线程不做限制
SQL线程回放时, 选择性回放
show slave status\G
Replicate_Do_DB:
Replicate_Ignore_DB:
2、参数说明
主库配置
黑名单
binlog-ignore-db=test #test库
binlog-ignore-table=test.t1 #test库下的t1表
binlog-wild-ignore-table=test.t* #test库下的t开头的所有表
白名单
binlog-do-db=test
binlog-do-table=test.t1
binlog-wild-do-table=test.t*
从库配置
黑名单
replicate-ignore-db=test
replicate-ignore-table=test.t1
replicate-wild-ignore-table=test.t*
白名单
replicate-do-db=test
replicate-do-table=test.t1 # test库下的t1表
replicate-wild-do-table=test.t* # test库下t开头的表
3、实现过程
在线配置
#停止SQL线程
STOP SLAVE SQL_THREAD;
#设置需要过滤复制过滤的库名
CHANGE REPLICATION FILTER REPLICATE_DO_DB = (db1, db2);
#启动SQL线程
START SLAVE SQL_THREAD;
配置文件
vim my.cnf
# [mysqld] 区域添加, 有多个需要写多行
#白名单
replicate_do_db=db1
replicate_do_db=db2
...
#重启服务
systemctl restart mysqld
#查看过滤复制
show slave status\G
Replicate_Do_DB: db01,db02
