MySQL 复制过滤重复如何解决

2022-11-12 09:27:54
内容摘要
这篇文章主要为大家详细介绍了MySQL 复制过滤重复如何解决,具有一定的参考价值,可以用来参考一下。 对此感兴趣的朋友,看看idc笔记做的技术笔记!1、replicate_do_db 和 replica
文章正文

这篇文章主要为大家详细介绍了MySQL 复制过滤重复如何解决,具有一定的参考价值,可以用来参考一下。

对此感兴趣的朋友,看看idc笔记做的技术笔记!

1、replicate_do_db 和 replicate_ignore_db 不要同时出现。容易出现混淆。也是毫无意义的。Replicate_Do_DB: db1Replicate_Ignore_DB: db2statement模式:使用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.tb1statement模式: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 = db1replicate-do-table = db2.tbl2USE db1;INSERT INTO db2.tbl2 VALUES (1);row模式下,默认DB不是db1,所以跳过第一条规则,执行表的规则,行被插入statement模式下,insert 语句被忽略,表的过滤规则已经在DB级别停止,所以没有做检查。

注:关于MySQL 复制过滤重复如何解决的内容就先介绍到这里,更多相关文章的可以留意

代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!