MySQL复制过滤器

复制过滤器的原理就是,主节点只复制一个或一部分数据库的数据到从节点上,并不是全部复制;

复制过滤器可以设置类似“黑白名单”的功能,来设置哪些数据可以复制到从节点,哪些是不可以的

复制过滤器有两种实现:一是在主节点配置,一是在从节点配置

在主节点配置复制过滤器缺点就是二进制日志记录的是某一库的数据信息,而不会记录其他库信息,这样当其他库故障时就无法从二进制日志进行重放恢复。

所以,一般不会在主节点配置过滤;

在从节点配置复制过滤就比较常用了,但是也有缺点,就是增加IO读写的压力,因为主节点记录所有库的二进制日志信息依然会被从节点IO线程读取,并存储在

从节点的中继日志中,由于设置了过滤,在从节点执行SQL线程时只会重放未被过滤掉的操作;

下面举个例子说明:

在从节点配置过滤器

STOP SLAVE;
#首先将从节点的功能关闭
SET @@global.replicate_ignore_table=‘mydb.tbl‘;
#我们将mydb数据库中的tbl表过滤掉,即从节点的mysql数据库不会包含此表
START SLAVE IO_THREAD,SQL_THREAD;
#开启从节点的IO和SQL线程
#配置完成,接下来测试

测试

 create database mydb;  
 #在主节点创建数据库mydb,此时在从节点上是能够同步此库的
 create table tbl(id int primary key,name char(30));
 #在主节点创建mydb.tbl表,然后在从节点查看此表是否被过滤
MariaDB [mydb]> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.101  #主节点host
                  Master_User: repluser  #主节点授权复制的账户
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master-log.000003  #要复制的主节点的二进制日志
          Read_Master_Log_Pos: 936   #从此二进制日志的什么位置开始复制
               Relay_Log_File: relay-log.000007  #从节点的中继日志,即将二进制日志通过IO读入中继日志的
                Relay_Log_Pos: 643
        Relay_Master_Log_File: master-log.000003
             Slave_IO_Running: Yes  #从节点的IO功能是否开启,重要
            Slave_SQL_Running: Yes  #从节点的SQL功能是否开启,重要
              Replicate_Do_DB:   #白名单,Do表示允许,即不过滤
          Replicate_Ignore_DB:   #黑名单,Ignore表示拒绝,即过滤,除了数据库,还可以对表做过滤
           Replicate_Do_Table: 
       Replicate_Ignore_Table: mydb.tbl  #ignore表示黑名单即过滤,所以我们在从节点show tables;是看不到此表的
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 936
              Relay_Log_Space: 1216
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0  
        #从节点落后于主节点的时间,单位是秒。主节点写入时是并行执行,而从节点IO读取则是串行操作,所以当主节点频繁写入时,主从间的差异会越来越大
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0  #IO和SQL错误信息
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
1 row in set (0.00 sec)

由于我们在从节点设置的是过滤mydb.tbl表,但是如果在mydb库中创建tbl2表,那么此表会被复制到从节点。

实验结束

时间: 2024-10-08 21:28:48

MySQL复制过滤器的相关文章

MySQL 复制过滤器、监控维护及主从复制的读写分离

MySQL 复制过滤器.监控维护及基于SSL的主从复制 =============================================================================== 概述: 本章将主要介绍MySQL复制中如何过滤,监控维护,以及基于SSL的主从复制,具体内容如下: MySQL 复制过滤器 ·从服务器库级别过滤 MySQL 清理日志:PURGE 复制监控 ·Master ·Slave 如何确定主从节点的数据是否一致 MySQL基于SSL的主从复制(

数据库 之 Mysql复制过滤器

复制过滤器:仅复制有限一个或几个数据库相关的数据,而非所有:由复制过滤器进行: 有两种过滤方式,在主服务器上进行过滤或者是在从服务器上进行过滤 (1) 主服务器上过滤 实现有选择的复制,只复制主节点上的一部分,从源头上选择几个库主节点过滤,写入二进制日志的时候有选择,影响其他库的时间点还原 主服务器仅向二进制日志中记录有关特定数据库相关的写操作: 问题:其它库的time-point recovery将无从实现,影响其他库的时间点还原: 主节点上使用以下的选项,以下是黑白名单,同一库二者选其一即可

MySQL复制之理论篇

一.MySQL复制概述 MySQL支持两种复制方式:基于行的复制和基于语句的复制(逻辑复制).这两种方式都是通过在主库上记录 二进制日志.在备库重放日志的方式来实现异步的数据复制,其工作原理如下图: 同一时间点主库和备库的数据可能存在不一致.复制通常不会增加主库的开销,主要是启用二进制日志带来的开 销.通过复制可以将读操作指向备库来获得更好的读扩展,但对于写操作,除非设计得当,否则并不适合通过复制来 扩展写操作.在一主库多备库的架构中,写操作会被执行多次,这时候整个系统的性能取决于写入最慢的那部

双主模型、SSL、percona-toolkit、MySQL复制概念深入

[减轻复制压力]复制过滤器,指定需要复制的白名单,或者需要忽略的黑名单 [[email protected] ~]# cd /etc/ [[email protected] etc]# cp my.cnf{,.master} [[email protected] etc]# ll my.cnf* -rw-r--r--. 1 root root 4686 10月 13 04:43 my.cnf -rw-r--r--. 1 root root 4686 10月 14 20:00 my.cnf.mas

mysql复制(高可用架构方案的基础)

mysql复制:把一个数据库实例上所有改变复制到另外一个数据库库服务器实例的过程特点:1.没有改变就无所谓复制 ;改变是复制的根本与数据源2.所有的改变:是指可以复制全部改变,也可以复制部分改变 可以在全部改变中根据业务需求选择部分库和部分表的复制复制的场景: 1.数据库容灾 2.需求:创建一个从数据服务器,做数据的测试和分析 3.负载均衡 4.复制时高可用架构方案的基础 mysql高可用架构特点1.数据库故障的检测与排除2.主从数据库的切换3.数据的备份和保护 mysql高可用架构常用方案1.

43 MySQL复制及Galera Cluster、MHA

01 MySQL复制及MHA 实战:配置MHA 配置: node1: MHA 192.168.1.130 CentOS7.2 node2:Master 192.168.1.131 CentOS7.2 node3:Slave  192.168.1.132 CentOS7.2 node4:Slave  192.168.1.133 CentOS7.2 一.准备mysql复制环境 [[email protected] ~]# yum -y install mariadb-server [[email p

MySQL复制 -- binlog(2)

MySQL复制是使用最为广泛的一套组建,上一节已经简单说了一下复制的一些用途和复制的原理,知道了这些我们能够快速的搭建起复制的平台,但是仅知道这些还是不够的,很多时候并不是一帆风顺的,总会有那么一小段时间,或者总会有那么几次会出现各种各样的问题.当出现问题我们应该怎么去解决呢? 下面我们先来看看MySQL复制常见的一些问题,以及对应的解决办法:更进一步的我们是否可以考虑做的更好,提供自动化或者半自动化的工具来帮助我们更快更好的解决问题呢? OK,首先我们先来看看我们经常在复制中会遇到的问题吧.

搭建MHA环境【2】安装mysql-5.6 + mysql复制

本例中mysql的安装方式选用了二进制包安装方案.mysql复制用半同步复制方案 [1]安装mysql-5.6.31 要在所有的数据节点上都安装上mysql,安装方式大致相同,所以我这里就不重复写多次了,只以一台为例. 1.1 解压安装包到/usr/local/ tar -xzvf mysql-5.6.31-linux-glibc2.5-x86_64.tar.gz -C /usr/local 1.2 为了创建linux系统的mysql用户 useradd mysql 1.3 创建连接文件 cd

第20章 mysql 复制

2015-10-24 目录 参考资料 [1] 唐汉明.深入浅出MySQL 数据库开发.优化与管理维护(第2版)[M].北京:人民邮电出版社,2014 [2] Schwartz.高性能MySQL(第3版)[M].北京:电子工业出版社,2013 [3] Chapter 17 Replication [4] 第6章:MySQL中的复制 [5] 理解MySQL——复制(Replication) [6] MySQL 5.6 复制介绍 [7] MySQL复制原理与配置 [8] mysql主从复制(超简单)