MySQL/MariaDB数据库的复制过滤器
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.复制过滤器概述
1>.复制器过滤器功能
让从节点仅复制指定的数据库,或指定数据库的指定表。
2>.两种实现方式
方案一:
主服务器仅向二进制日志中记录与特定数据库相关的事件 此项和binlog_format相关,详情请参考官网说明:https://mariadb.com/kb/en/library/mysqld-options/#-binlog-ignore-db binlog_do_db = 数据库白名单列表,多个数据库需多行实现 binlog_ignore_db = 数据库黑名单列表 问题:
基于二进制还原将无法实现(因为记录的日志只有部分数据库信息,可能存在部分数据无法还原的现象);不建议使用
方案二:
从服务器SQL_THREAD在replay中继日志中的事件时,仅读取与特定数据库(特定表)相关的事件并应用于本地 问题:
由于将master节点的所有数据都copy至slave节点,但SQL_THREAD线程仅读取与特定数据库(特定表)相关的事件并应用于本地,也就是说部分数据传过来也不去使用,这会造成网络及磁盘IO浪费。
3>.从服务器上的复制过滤器相关变量
MariaDB [(none)]> SHOW VARIABLES LIKE '%replicate%'; +----------------------------------+-----------+ | Variable_name | Value | +----------------------------------+-----------+ | replicate_annotate_row_events | OFF | | replicate_do_db | | | replicate_do_table | | | replicate_events_marked_for_skip | replicate | | replicate_ignore_db | | | replicate_ignore_table | | | replicate_wild_do_table | | | replicate_wild_ignore_table | | +----------------------------------+-----------+ 8 rows in set (0.00 sec) MariaDB [(none)]>