参考文档:
 
总共有6个过滤规则:
1  --replicate-do-db
2  --replicate-ignore-db
3  --replicate-do-table
4  --replicate-wild-do-table
5  --replicate-ignore-table
6  --replicate-wild-ignore-table
 
以上6个规则的前2个是库级别的规则,后4个是表级别的规则。使用注意点:
1:库级别的规则,只针对binlog_format='STATEMENT'或'MIXED'。
2:如果是binlog_format='ROW',不受库级别规则限制,只受表级别规则限制。
3:表级别的规则,针对所有模式。
4:binlog_format='STATEMENT'或者'MIXED'时,记录use 语句,此时如果使用 --replicate-do-db,则不支持跨库修改。
    如use test; update db1 set …… 这里判断的是use 后面的test库,所以updte语句不执行。建议使用--replicate-wild-do-table
5:binlog_format='ROW'时,不记录use语句。只受表级别规则的影响。只能配置后面四条规则。
 
测试不同模式下binlog记录情况:
 
执行sql:
set global binlog_format='row';
use test;
update db1.t2 set name='a200' where id=105;
use db1;
 
记录的binlog如下:
 /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#170808 0:49:08 server id 1882073306 end_log_pos 120 CRC32 0xbddf73ce Start: binlog v 4, server v 5.6.23-72.1-log created 170808 0:49:08
# Warning: this binlog is either in use or was not closed properly.
# at 120
#170808 0:50:16 server id 1882073306 end_log_pos 191 CRC32 0xb2586cef Query thread_id=73 exec_time=0 error_code=0
SET TIMESTAMP=1502124616/*!*/;
SET @@session.pseudo_thread_id=73/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1073741824/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at 191
#170808 0:50:16 server id 1882073306 end_log_pos 245 CRC32 0xe7585ab8 Table_map: `db1`.`t2` mapped to number 395
# at 245
#170808 0:50:16 server id 1882073306 end_log_pos 365 CRC32 0x86dbbb24 Update_rows: table id 395 flags: STMT_END_F
### UPDATE `db1`.`t2`
### WHERE
### @1=105 /* INT meta=0 nullable=0 is_null=0 */
### @2='a100' /* VARSTRING(90) meta=90 nullable=0 is_null=0 */
### @3='57747ab889255af96b48d65e505382' /* VARSTRING(90) meta=90 nullable=0 is_null=0 */
### @4='' /* VARSTRING(72) meta=72 nullable=0 is_null=0 */
### @5=NULL /* VARSTRING(72) meta=0 nullable=1 is_null=1 */
### SET
### @1=105 /* INT meta=0 nullable=0 is_null=0 */
### @2='a200' /* VARSTRING(90) meta=90 nullable=0 is_null=0 */
### @3='57747ab889255af96b48d65e505382' /* VARSTRING(90) meta=90 nullable=0 is_null=0 */
### @4='' /* VARSTRING(72) meta=72 nullable=0 is_null=0 */
### @5=NULL /* VARSTRING(72) meta=0 nullable=1 is_null=1 */
# at 365
#170808 0:50:16 server id 1882073306 end_log_pos 396 CRC32 0x99f0e5d3 Xid = 32212
COMMIT/*!*/;
 
执行sql:
set global binlog_format='mixed';
use test;
update db1.t2 set name='a300' where id=105;
use db1;
 
记录的binlog如下:
 # at 396
#170808 0:53:14 server id 1882073306 end_log_pos 474 CRC32 0x46f75d21 Query thread_id=74 exec_time=0 error_code=0
SET TIMESTAMP=1502124794/*!*/;
BEGIN
/*!*/;
# at 474
#170808 0:53:14 server id 1882073306 end_log_pos 589 CRC32 0x7193484c Query thread_id=74 exec_time=0 error_code=0
use `test`/*!*/;
SET TIMESTAMP=1502124794/*!*/;
update db1.t2 set name='a300' where id=105
/*!*/;
# at 589
#170808 0:53:14 server id 1882073306 end_log_pos 620 CRC32 0xc3e0c9e3 Xid = 32328
COMMIT/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

mysql复制过滤参数说明的更多相关文章

  1. MySQL 5.7在线设置复制过滤

    很久没有更新博客了,主要是公司事情比较多,最近终于闲下来了.然而5.7也GA了,有许多新的特性,其中现在可以进行在线设置复制过滤了.但是还是得停复制,不过不用重启实例了.方便了DBA们进行临时性的调整 ...

  2. MySQL 5.5主从关于‘复制过滤’的深入探究

    关于MySQL主从复制的过滤,例如通过binlog-ignore-db.replicate-do-db.replicate-wild-do-table等.如果不好好研究过这些过滤选项就用的话,是有可能 ...

  3. MySQL 5.7在线设置复制过滤【转】

    转自 MySQL 5.7在线设置复制过滤 - yayun - 博客园 https://www.cnblogs.com/gomysql/p/4991197.html 5.7也GA了,有许多新的特性,其中 ...

  4. MySQL(mariadb)主从复制模式与复制过滤

    在前一篇文章<mysql多实例与复制应用>中只对mysql的复制做了简单的介绍,本篇内容专门介绍一下mysql的复制. MySQL复制 mysql复制是指将主数据库的DDL和DML操作通过 ...

  5. 理解MySQL——复制(Replication)

    1.复制概述 1.1.复制解决的问题数据复制技术有以下一些特点:(1)    数据分布(2)    负载平衡(load balancing)(3)    备份(4)    高可用性(high avai ...

  6. MySQL复制之理论篇

    一.MySQL复制概述 MySQL支持两种复制方式:基于行的复制和基于语句的复制(逻辑复制).这两种方式都是通过在主库上记录 二进制日志.在备库重放日志的方式来实现异步的数据复制,其工作原理如下图: ...

  7. 涂抹mysql笔记-mysql复制特性

    <>mysql复制特性:既可以实现整个服务(all databases)级别的复制,也可以只复制某个数据库或某个数据库中的某个指定的表对象.即可以实现A复制到B(主从单向复制),B再复制到 ...

  8. 31.Mysql复制

    31.Mysql复制复制是指将主数据库的DDL和DML操作通过二进制日志传到从数据库上,然后在从数据库上对重做日志,从而使从库与主库保持同步.Mysql支持一台主库同时向多台从库复制,从库也可以作为其 ...

  9. MySQL复制框架

    一.复制框架 开始接触复制时,看到各种各样的复制,总想把不同类型对应起来,结果越理越乱~究其原因就是对比了不同维度的属性,不同维度得出的结果集之间必然存在交集,没有必要将不同维度的属性安插到成对的萝卜 ...

随机推荐

  1. 标准ACL、扩展ACL和命名ACL的配置详解

    访问控制列表(ACL)是应用在路由器接口的指令列表(即规则).这些指令列表用来告诉路由器,那些数据包可以接受,那些数据包需要拒绝. 访问控制列表(ACL)的工作原理 ACL使用包过滤技术,在路由器上读 ...

  2. Linux系统调用过程分析

    參考: <Linux内核设计与实现> 0 摘要 linux的系统调用过程: 层次例如以下: 用户程序------>C库(即API):INT 0x80 ----->system_ ...

  3. Centos下mahout安装与配置

    对于Mahout的安装与配置,须要一个前提.就是hadoop已经安装. 假设没有安装能够參考. http://blog.csdn.net/u012965373/article/details/4533 ...

  4. Android 布局自适应屏幕

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenFzNjI3NjExMzA=/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  5. Java Web项目开发中常见路径获取方法

    项目绝对路径 String serverPath = request.getSession().getServletContext().getRealPath("/"); E:\J ...

  6. Spring中定时器实现

    在Spring 中使用Quartz,本文介绍Spring3.0以后自主开发的定时任务工具,spring task,可以将它比作一个轻量级的Quartz,而且使用起来很简单,除spring相关的包外不需 ...

  7. iOS开发——优化篇—— 25个性能优化/内存优化常用方法

    1. 用ARC管理内存 ARC(Automatic ReferenceCounting, 自动引用计数)和iOS5一起发布,它避免了最常见的也就是经常是由于我们忘记释放内存所造成的内存泄露.它自动为你 ...

  8. 【bzoj1269】[AHOI2006]文本编辑器editor

    在bzoj上乱翻,发现了可持久化并查集,然后baidu了一下,发现一种叫rope的东西.   !!!真的太爽了!!!   直接上代码,感受一下(也是蒯来的).       由于rope的底层实现,in ...

  9. YTU 2677: 韩信点兵

    2677: 韩信点兵 时间限制: 1 Sec  内存限制: 128 MB 提交: 61  解决: 38 题目描述 刘邦问韩信:"你觉得我可以带兵多少?"韩信:"最多十万. ...

  10. 在mac下设置环境变量

    在mac下设置环境变量   在基于unix/linux的操作系统下进行程序开发,使用环境变量将会方便.通过设置环境变量将可以在任意目录通过输入程序名来执行设定目录下的程序.不需要通过cd将工作目录改变 ...