数据库 之 Mysql复制过滤器

复制过滤器:仅复制有限一个或几个数据库相关的数据,而非所有;由复制过滤器进行;

有两种过滤方式,在主服务器上进行过滤或者是在从服务器上进行过滤

(1) 主服务器上过滤

实现有选择的复制,只复制主节点上的一部分,从源头上选择几个库主节点过滤,写入二进制日志的时候有选择,影响其他库的时间点还原

主服务器仅向二进制日志中记录有关特定数据库相关的写操作;

问题:其它库的time-point recovery将无从实现,影响其他库的时间点还原;

主节点上使用以下的选项,以下是黑白名单,同一库二者选其一即可

binlog_do_db= #白名单,向binlog中写入哪些库的二进制log,多个库名用逗号分隔

binlog_ignore_db=#黑名单,此处写入的库不记录二进制log,多个库用逗号隔开

但是这里有个问题是,如果某个库故障,要还原的时候就会出问题,所以一般不在主节点上过滤,主节点建议将所有的库都写入二进制日志。

(2) 从服务器上过滤

从服务器的SQL THREAD仅重放关注的数据库或表相关的事件,并将其应用于本地;

问题:会消耗更多的网络IO和磁盘IO;

重放库的选择:

Replicate_Do_DB=

Replicate_Ignore_DB=

重放表的选择:

Replicate_Do_Table=

Replicate_Ignore_Table=

这两个和上面两个类似,下面的表可以使用通配符

Replicate_Wild_Do_Table=

Replicate_Wild_Ignore_Table=

如果同一库既被允许,又被拒绝,则该库将被复制

例子

假设主服务器上有一个库为sunnydb,但是从服务器重放时不重放该数据库,因此在从服务器73上设定如下,

注意,设定前要先关闭slave进程

MariaDB [test2]> stop slave;

MariaDB [test2]> set @@global.Replicate_ignore_DB=sunnydb;#该参数建议写入配置文件,否则下次重启就会失效

那么在主服务器71上创建数据库sunnydb,该库的所有二进制信息都会被复制到从服务器的slave_log,但是都不会被从服务器73上的sql线程重放sunnydb库的数据。

原文地址:http://blog.51cto.com/ghbsunny/2064647

时间: 2024-10-17 10:30:45

数据库 之 Mysql复制过滤器的相关文章

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

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

MySQL复制过滤器

复制过滤器的原理就是,主节点只复制一个或一部分数据库的数据到从节点上,并不是全部复制: 复制过滤器可以设置类似"黑白名单"的功能,来设置哪些数据可以复制到从节点,哪些是不可以的 复制过滤器有两种实现:一是在主节点配置,一是在从节点配置 在主节点配置复制过滤器缺点就是二进制日志记录的是某一库的数据信息,而不会记录其他库信息,这样当其他库故障时就无法从二进制日志进行重放恢复. 所以,一般不会在主节点配置过滤: 在从节点配置复制过滤就比较常用了,但是也有缺点,就是增加IO读写的压力,因为主节

数据库 之 Mysql复制概念介绍

Master/Slave Master: write/read,写操作都在主节点上操作 Slaves: read,读操作都是从节点这边发出 为什么要复制? 冗余:promte(提升为主),异地灾备,可以通过人工或者工具程序(MHA)实现 扩展:转移一部分"读"请求: 支援安全的备份操作: 测试需要: 主/从架构实现: 在主节点上启用二进制日志,从节点启动连接线程,请求主节点把这个事件发给自己一份,从节点上有一个线程叫IO Thread,主节点上启用dump thread,IO Thre

【数据库】MySQL 复制表结构

介绍 有时候我们需要原封不动的复制一张表的表结构来生成一张新表,MYSQL提供了两种便捷的方法. 例: CREATE TABLE tb_base( id INT NOT NULL PRIMARY KEY, name VARCHAR(10), KEY ix_name (name)) ENGINE='MyISAM',CHARSET=utf8,COMMENT 'a' ; insert into tb_base() values(1,'a'),(2,'b'); 一.LIKE方法 like方法能一模一样的

General MYSQL 复制.frm数据库文件后查看表提示表不存在 Error code: 1146

现象: 将含.frm的源数据库文件夹复制到另一Mysql环境下后,打开Mysql,查看数据库和表都无问题,但在打开数据表查看表结构和表数据时提示error code: 1146,要访问的数据表"doesn't exist" 解决: 除了复制.frm的源数据库文件夹外,还需停止mysql服务(无论是拷贝源还是拷贝目的地,mysql服务最好都停掉),然后再复制与源数据库文件夹同目录下的以下3个文件粘贴或覆盖到目的文件中,然后再启动Mysql服务即可. 拷贝以上3个文件需以停止Mysql服务

后端分布式系列:分布式存储-MySQL 数据库双向同步复制

MySQL 复制问题的最后一篇,关于双向同步复制架构设计的一些设计要点与制约. 问题和制约 数据库的双主双写并双向同步场景,主要考虑数据完整性.一致性和避免冲突.对于同一个库,同一张表,同一个记录中的同一字段的两地变更,会引发数据一致性判断冲突,尽可能通过业务场景设计规避.双主双写并同步复制可能引发主键冲突,需避免使用数据库自增类主键方案.另外,双向同步潜在可能引发循环同步的问题,需要做回环控制. 如上图所示,复制程序写入时也会产生 binlog,如何识别由复制程序产生的 binlog 并将其过

Mysql主从数据库架构的复制原理及配置详解

1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从服务器接收

利用navicat for mysql实现mysql数据库表结构复制

1.选择navicat for mysql的数据传输功能 2.选择高级设置,取消插入记录功能 3.选择传输数据库及相应表即可. 利用navicat for mysql实现mysql数据库表结构复制

MySQL复制数据库

MySQL复制数据库的办法非常多.针对不同的场景,选择相应的办法.在可以停止写入,不用保证数据一致性,需要速度的情况下,可以通过物理复制的办法.以下给出脚本: #!/bin/bash datadir=/data/mysql export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin:/usr/local/mysql/bin usage(){ echo -e "Usage: $0 db1 db2