mysql 复制过滤_MySQL复制过滤注意事项

1、replicate_do_db 和 replicate_ignore_db 不要同时出现。容易出现混淆。也是毫无意义的。

Replicate_Do_DB: db1

Replicate_Ignore_DB: db2

statement模式:

使用use 语句

use db1;insert into tb1 values (1);

use db2;insert into tb2 values (2);

以上在slave上均能正确复制,tb1 有数据,tb2没有数据。

不使用use 语句

insert into db1.tb1 values (11);

insert into db2.tb2 values (11);

结果tb1没有数据,tb2也没有数据(按照文档上来讲,应该有的)

row模式:

无论是否使用use 语句,均能正确复制

小结:对于statement模式,SQL语句必须使用use 语句,并设置设置多个replicate_do_db来复制多个DB。

2、只进行表级别过滤的时候,对于statement模式,无论是否使用use语句,均能正确复制。row模式也是可以的。(表名它匹配的表的全名:数据库名+表名)

replicate_do_table=db1.tb1

statement模式:

use db1; insert into tb1 values (22);

insert into db1.tb1 values (22);

两者的复制结果一致。

(同样do 和 ignore 不要混用,除非出现过滤DB的情况)

3、有DB过滤规则的时候,statment模式必须使用USE语句,不能出现 db.表名,db.视图,db.存储程序这样的形式。row模式完胜!

replicate-ignore-db = db1

replicate-do-table = db2.tbl2

USE db1;

INSERT INTO db2.tbl2 VALUES (1);

row模式下,

默认DB不是db1,所以跳过第一条规则,执行表的规则,行被插入

statement模式下,

insert 语句被忽略,表的过滤规则已经在DB级别停止,所以没有做检查。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值