服务器之家

服务器之家 > 正文

mysql 复制过滤重复如何解决

时间:2019-12-12 16:56     来源/作者: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级别停止,所以没有做检查。 

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
配置IIS网站web服务器的安全策略配置解决方案
配置IIS网站web服务器的安全策略配置解决方案 2019-05-23
Nginx服务器究竟是怎么执行PHP项目
Nginx服务器究竟是怎么执行PHP项目 2019-05-24
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
返回顶部