侧边栏壁纸
博主头像
张种恩的技术小栈博主等级

行动起来,活在当下

  • 累计撰写 748 篇文章
  • 累计创建 65 个标签
  • 累计收到 39 条评论

目 录CONTENT

文章目录

MySQL的复制过滤器

zze
zze
2020-05-12 / 0 评论 / 0 点赞 / 506 阅读 / 1446 字

不定期更新相关视频,抖音点击左上角加号后扫一扫右方侧边栏二维码关注我~正在更新《Shell其实很简单》系列

复制过滤器的作用是让从节点仅复制指定的数据库,或指定数据库的指定表。

有如下两种实现方式:

  • 方式一:主服务器仅向二进制日志中记录与特定数据库(或特定表)相关的事件;

  • 方式二:从服务器 SQL 线程在 replay 中继日志中的事件时,仅读取与特定数据库(或特定表)相关的事件并应用于本地;

这两种方式各有利弊:

  • 方式一方式更节省空间,但如果未备份的库或表出现故障,八成就无法完整恢复了,所以不推荐使用;

  • 方式二方式会造成网络带宽、磁盘 I/O、以及存储空间额外的浪费,不过相对来说更安全,因为备份的数据多嘛;

这两种方式可通过如下参数进行配置:

方式一:
	binlog_do_db:数据库白名单列表,即仅记录此处指定的数据库的 binlog 日志;
	binlog_ignore_db:数据库黑名单列表,即仅不记录此处指定的数据库的 binlog 日志;
方式二:
	replicate_do_db:数据库白名单,即仅读取此处指定的数据库的 relay 日志;
	replicate_ignore_db:数据库黑名单,即仅不读取此处指定的数据库的 relay 日志;
	replicate_do_table:数据表白名单,即仅读取此处指定的表的 relay 日志;
	replicate_ignore_table:数据库黑名单,即仅不读取此处指定的表的 relay 日志;	
	replicate_wild_do_table:作用同 replicate_do_table,但它支持以 % 作为通配符匹配表名;
	replicate_wild_ignore_table:作用同 replicate_ignore_table,但它支持以 % 作为通配符匹配表名;

很清晰易懂,直接在 my.cnf 中配置即可,就不演示了~~~

除了可以在 my.cnf 中配置外,从库的 replicate_* 配置配置还可在线修改,语法格式如下:

CHANGE REPLICATION FILTER filter[, filter][, ...]

比如要修改仅读取 db1db2 库的 relay 日志,则可执行如下语句:

mysql> STOP SLAVE SQL_THREAD;
mysql> CHANGE REPLICATION FILTER REPLICATE_DO_DB = (oldguo, oldboy);
mysql> START SLAVE SQL_THREAD;

具体用法可通过 help replication filter 查看。

0

评论区