自学内容网 自学内容网

第94讲:MySQL主从复制过滤复制的概念以及使用

1.主从复制过滤复制的概念

在MySQL主从复制集群中,既可以对全库进行主从复制,也可以对数据库实例中的某个数据库进行主从复制,对单个库进行主从复制的场景我们称为过滤复制,只对指定的库实现主从复制机制。

过滤复制可以在主库层面实现,也可以在从库层面实现。

  • 主库层面实现过滤复制
    • 主要针对两个参数来实现:binlog_do_db(白名单)和binlog_ingore_db(黑名单),这两个参数是声明那些数据库记录binlog日志,我们将要进行主从复制的数据库配置在白名单中,此时主库只会针对这一个库记录binlog,从库的i/O线程拿到的binlog也只是针对这一个库的,从而实现只对这一个库进行主从复制。
    • 应用很少,因为一个数据库中不可能只有一个数据库,binlog是十分重要的,不会只对某个库记录binlog。
  • 从库层面实现过滤复制
    • 从库层面实现过滤复制,主要是有SQL线程实现的,I/O线程正常接收主库传来的全库Binlog,SQL线程在执行这些Binlog时,根据配置的过滤复制参数,只执行与这个库相关的binlog日志,从而实现过滤复制。
    • I/O线程还是会接受来自主库的所有库的Binlog,在show slave status中是可以看到即使不是过滤的库,产生的Binlog也会增长,就说明I/O线程接收的是全库的Binlog,SQL线程执行时只执行我们过滤的数据库的Binlog。

2.通过从库层面实现过滤复制

只复制db_1数据库。

2.1.从库过滤复制的参数

#这些参数需要配置到从库的配置文件中
replicate_do_db=#要复制那些数据库
replicate_ignore_db=#不要复制那些数据库

replicate_do_table=#要复制那些表
replicate_ignore_table=#不要复制那些表

replicate_wild_do_table=    #要复制那些表,模糊匹配
replicate_wild_ignore_table=    #不要复制那些表,模糊匹配

2.2.配置过滤复制

在从库的配置文件里操作。

[root@mysql-2 ~]# vim /etc/my3307.cnf 
[mysqld]
replicate_do_db=db_1

[root@mysql-2 ~]# systemctl restart mysqld3307

此时只会复制db_1数据库产生的操作。

image-20220708171033706

2.3.验证复制的准确性

在db_1数据库中创建一个表,写入数据,验证是否会被复制到从库。

mysql> use db_1;
mysql> create table yubiao (id int);
mysql> insert into yubiao values(1),(2);
mysql> select * from yubiao;
+------+
| id   |
+------+
|    1 |
|    2 |
+------+

db_1数据库只要有操作就会被复制到从库。

image-20220708171436733

再创建一个db_5数据库观察是否会同步。

mysql> create database db_5;

db_5数据库不会被复制过去。

image-20220708171630819


原文地址:https://blog.csdn.net/weixin_44953658/article/details/135946188

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!