博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL复制过滤器
阅读量:6344 次
发布时间:2019-06-22

本文共 2263 字,大约阅读时间需要 7 分钟。

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

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

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

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

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

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

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

下面举个例子说明:

在从节点配置过滤器

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

测试

1
2
3
4
 
create database mydb;  
 
#在主节点创建数据库mydb,此时在从节点上是能够同步此库的
 
create table tbl(
id 
int primary key,name char(30));
 
#在主节点创建mydb.tbl表,然后在从节点查看此表是否被过滤
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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表,那么此表会被复制到从节点。

实验结束\

本文转自  a_pan  51CTO博客,原文链接:http://blog.51cto.com/panpangao/1981556

转载地址:http://umula.baihongyu.com/

你可能感兴趣的文章
sessionStorage 、localStorage 和 cookie
查看>>
工厂方法
查看>>
Android showing LoadingView or EmptyView for Activity or Fragment
查看>>
Android 开机自动运行和添加删除桌面快捷方式
查看>>
[Android Pro] Android打包一个Apk后,如何查看它的VersionCode、VersionName 等等。
查看>>
Cause: com.ibatis.common.xml.NodeletException: Error parsing XML.
查看>>
中法两国还将在中非、东非携手加强基础设施建设、安全、金融、能源、维和护航、医药卫生和教育培训等领域全面展开合作...
查看>>
oracle查找树型结构数据
查看>>
第36-37 Tomcat & SVN
查看>>
百度编辑器ueditor异步载入的操作方法
查看>>
POJ1328 Radar Installation 【贪心·区间选点】
查看>>
使用GNU Autotools制作Makefile
查看>>
css基础选择器
查看>>
Spring+SpringMVC+MyBatis深入学习及搭建(三)——MyBatis全局配置文件解析
查看>>
连接mysql报错Access denied for user 'root'@'localhost' (using password: YES)解决办法
查看>>
js点击下载图片
查看>>
Ubuntu Linux系统的分区方案【转】
查看>>
数据库中的数据类型
查看>>
MVC3教程中无法引用system.data.entity.database的解决办法
查看>>
前端学习路线
查看>>