栏目头部广告

MySQL复制过滤器配置方法

方法一:直接修改配置文件(需要重启)

1、主库配置

replicate_do_db ="db1";#复制的库白名单

replicate_ingore_db ="db2"; #复制的库黑名单

replicate_do_table="db1.t1%";#复制的表白名单

relicate_ingore_table="db2.t2%";#复制的表黑名单  

【注】模糊匹配可以使用通配符。

2、从库配置

replicate_wild_do_table=""; 

replicate_wild_ignore_table="";

【注】在从库配置的优势在于,主库设置replicate_do_db或replicate_ignore_db后,MySQL执行sql检查的默认是当前数据库,所以在跨库更新语句的时候,SQL在slave上会被忽略,如:

主库设置了:replicate_ignore_db=db2

use db2;

update db1.t1 set ......

那么slave节点上第二句set会被忽略执行

如在Master服务器上设置 replicate_do_db=db1

use db2;

update db1.t1 set ......

那么slave节点上第二句将不会被执行

方法二:在线修改(无需重启)

1、db1、db2加入复制白名单

mysql> show databases;

MySQL复制过滤器配置方法(图1)

mysql> CHANGE REPLICATION FILTER REPLICATE_DO_DB = (db1, db2);

*ERROR 3017 (HY000): This operation cannot be performed with a running slave sql thread; run STOP SLAVE SQL_THREAD first*

【注】上述报错有2中解决方案(1)STOP SLAVE SQL_THREAD; (2)stop slave;

mysql> stop slave;

mysql> CHANGE REPLICATION FILTER REPLICATE_DO_DB = (db1, db2);

MySQL复制过滤器配置方法(图2)

mysql> stop slave; #启动slave即可恢复主从同步

mysql> CHANGE REPLICATION FILTER REPLICATE_DO_DB = ();#取消白名单

2、db1、db2加入复制黑名单

mysql> stop slave;

mysql> CHANGE REPLICATION FILTER Replicate_Ignore_DB=(db1,db2);

mysql> start slave;

#取消复制过滤

mysql> stop slave;

mysql> CHANGE REPLICATION FILTER Replicate_Ignore_DB=();

mysql> start slave;

3、db1.t1%、db2.t2%,加白db1中t1开头的表,拉黑db2中t2开头的表

mysql> stop slave;

mysql>CHANGE REPLICATION FILTER REPLICATE_WILD_DO_TABLE = ('db1.t1%'),REPLICATE_WILD_IGNORE_TABLE =  ('db1.t2%');

mysql> start slave;

#取消配置

mysql> stop slave;

mysql>CHANGE REPLICATION FILTER REPLICATE_WILD_DO_TABLE = (),REPLICATE_WILD_IGNORE_TABLE =  ();

mysql> start slave;

作者:UStarGao
链接:https://www.starcto.com/mysql/72.html

来源:STARCTO
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

UCloud云平台推荐


UCloud新用户专属注册连接

UCloud CDN超值特惠专场

UCloud全球云主机(UHost/VPS)大促页面

UCloud快杰云主机大促页面

文章页广告

随便看看

栏目底部广告
`