代码驿站移动版
频道导航
HTML/Xhtml
CSS
JavaScript
HTML5
PHP教程
ASP.NET
正则表达式
AJAX
ThinkPHP
Yii
MySQL
MariaDB
Oracle
MongoDB
Redis
DedeCMS
PHPCMS
帝国CMS
WordPress
Discuz
其它CMS
Zend Studio
Sublime
Notepad
Dreamweaver
Windows
Linux
Nginx
Apache
IIS
CentOS
Ubuntu
Debian
网站优化
工具资源
PHP源码
ASP.NET源码
其它源码
图标素材
按钮素材
字体素材
DedeCMS模板
帝国CMS模板
PHPCMS模板
WordPress模板
Discuz!模板
单页模板
开发软件下载
服务器软件下载
广告投放
联系我们
版权申明
软件编程
网页前端
移动开发
数据库
服务器
脚本语言
PHP代码
JAVA代码
Python代码
Android代码
当前位置:
主页
>
数据库
>
Mysql
>
mysql 复制过滤重复如何解决
时间:2021-02-21 14:56:13 | 栏目:
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隔离级别、锁与MVCC介绍
mysql的group_concat函数使用示例
MySQL开启慢查询日志功能的方法
正确使用MySQL update语句
汇总整理MYSQL相关操作命令
相关文章
12-28
mysql优化取随机数据慢的方法
11-26
MySQL 数据类型 大全
12-07
Mysql事务操作失败如何解决
11-25
浅析mysql.data.dll驱动各版本介绍
01-02
浅析mysql 语句的调度优先级及改变
JQuery
VUE
AngularJS
MSSql
MySQL
MongoDB
Redis
Linux
Tomcat
Nginx
网站首页
广告投放
联系我们
版权申明
联系站长