您当前的位置: 首页 > 数据库教程 > MySQL教程 > mysql 复制过滤重复如何解决

mysql 复制过滤重复如何解决

作者:不详 来源:网络 发布时间: 2014-07-23 08:43 点击:
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上均

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级别停止,所以没有做检查。
分享到:
本文"mysql 复制过滤重复如何解决"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4