关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

两种Mysql复制过滤器简析

发布时间:2020-04-27 20:23:30

本文简要分析了Mysql复制滤波器。 我们希望我们能增加和更新一些知识。 如果我们还有其他需要了解的问题,可以继续关注我在行业信息的更新文章..

复制过滤原理:复制过滤器:(黑、白名单)仅复制有限一个或几个数据库相关的数据,而非所有;由复制过滤器进行;

有两种不同过滤处理方式,在主云服务器上进行信息过滤或者是在从服务器上进行分析过滤

(1) 主服务器上过滤

时间来实现选择性复制,复制只有主节点的一部分,选择从源节点滤波器几个主库,选择性地写入到二进制日志,在时间其他库减少冲击点

主机只将与特定数据库相关的写入操作记录到二进制日志;

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

使用主节点上的下列选项,以下是黑白名单,无论是同一个库的可任选其一

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

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

但是这里的问题是,如果一个库失败了,当你想恢复它的时候就会出现问题,所以它通常不会在主节点上被过滤,这就建议所有的库都被写入二进制日志。

(2) 从服务器上过滤

从服务器或数据库表的SQL线程仅播放相关感兴趣的事件,并将其应用到本地;

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

重放库的选择:

Replicate_Do_DB=

Replicate_Ignore_DB=

重放表的选择:

Replicate_Do_Table=

Replicate_Ignore_Table=

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

Replicate_Wild_Do_Table=

Replicate_Wild_Ignore_Table=

如果企业同一库既被允许,又被我们拒绝,则该库将被进行复制

例子

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

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

MariaDB [(none)]  stop slave;

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

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



/template/Home/Zkeys2/PC/Static