## 概述
mysql从5.7开始可以在线设置复制过滤,但是还是得停复制,不过不用重启实例了。方便了DBA们进行临时性的调整。
> [mysql的复制配置参考](https://blog.csdn.net/zhouchang3/article/details/53470250),建议尽量配置在slave上。
## 配置
**查看当前配置**
~~~
# 以下参数为空,代表还未配置复制过滤
mysql@slave> show slave status\G
*************************** 1. row ***************************
....
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
....
~~~
**配置同步m1**
现在主库上有m1,m2两个库,只想复制m1库
~~~
# 先停止sql线程
mysql@slave> STOP SLAVE SQL_THREAD;
# 只同步m1
mysql@slave> CHANGE REPLICATION FILTER REPLICATE_DO_DB = (m1);
# 启动SQL线程
mysql@slave> start SLAVE SQL_THREAD;
~~~
再次查看状态:
![](https://i.vgy.me/jqfNRE.png)
**恢复同步**
~~~
mysql@slave> STOP SLAVE SQL_THREAD;
mysql@slave> CHANGE REPLICATION FILTER REPLICATE_DO_DB = ();
mysql@slave> start SLAVE SQL_THREAD;
~~~
**只同步某写表**
同步db1库以“t1”或者“t2”开头的表
~~~
mysql@slave> CHANGE REPLICATION FILTER
-> REPLICATE_WILD_DO_TABLE = ('db1.t1%'),
-> REPLICATE_WILD_IGNORE_TABLE = ('db1.t2%');
~~~
同库过滤的话也可以这样写
~~~
mysql@slave> CHANGE REPLICATION FILTER
-> REPLICATE_WILD_DO_TABLE = ('db2.t1%','db2.t2%');
~~~
- 【mysql的编程专题①】流程控制与其他语法
- 【mysql的编程专题②】触发器
- 【mysql的编程专题③】内置函数
- 【mysql的编程专题④】存储过程
- 【mysql的编程专题⑤】自定义函数
- 【mysql的编程专题⑥】视图
- 【mysql的设计与优化专题(1)】ER图,数据建模与数据字典
- 【mysql的设计与优化专题(2)】数据中设计中的范式与反范式
- 【mysql的设计与优化专题(3)】字段类型与合理的选择字段类型
- 【mysql的设计与优化专题(4)】表的垂直拆分和水平拆分
- 【mysql的设计与优化专题(5)】慢查询详解
- 【mysql的设计与优化专题(6)】mysql索引攻略
- 【Mysql问题集锦(1)】mysql不能使用innodb存储引擎
- 【Mysql进阶技巧(2)】利用mysql生成唯一序号
- 【Mysql进阶技巧(1)】MySQL的多表关联与自连接
- 【Mysql高可用架构(1)】基于日志点的主从复制
- 【Mysql高可用架构(2)】主从管理的系统视图
- 【Mysql高可用架构(3)】基于GTID的主从复制
- 【Mysql高可用架构(4)】在线变更复制类型
- 【Mysql高可用架构(5)】多源复制(多主一从)
- 【Mysql高可用架构(6)】多线程复制
- 【Mysql高可用架构(7)】在线设置复制过滤
- 【Mysql高可用架构(8)】解决主从不一致
- 【Mysql高可用架构(9)】初识mycat以及制作mycat镜像
- 【Mysql高可用架构(10)】mycat配置mysql读写分离
- MyCat 集群部署(HAProxy + MyCat)
- 常用复杂sql语句整理