【mysql】mysql之过滤复制

server/2024/10/18 8:35:41/

  本站以分享各种运维经验和运维所需要的技能为主

《python零基础入门》:python零基础入门学习

《python运维脚本》: python运维脚本实践

《shell》:shell学习

《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战

《k8》从问题中去学习k8s

《docker学习》暂未更新

《ceph学习》ceph日常问题解决分享

《日志收集》ELK+各种中间件

《运维日常》运维日常

《linux》运维面试100问

《DBA》db的介绍使用(mysql、redis、mongodb...)

一、过滤复制

什么是过滤复制

# 出现原因
让从节点仅仅复制指定的数据库,或指定数据库的指定数据表。主服务器有10个数据库,而从节点只需要同步其中的一两个数据库。这个时候就需要复制过滤。
复制过滤器可以在主节点中实现,也可以在从节点中实现。# 过滤复制选择:
主节点: 
在主节点的二进制事件日志中仅记录与指定数据库(数据表)相关的事件日志,但是主节点的二进制日志不完整,没有记录所有对主节点的修改操作。(不推荐) 如果要使用该方式,则在主节点的配置文件中添加如下参数:binlog_do_db=”XXX,XXX,XXX”;     #数据库白名单列表
binlog_ingore_db=”XXX,XXX,XXX”; #数据库黑名单列表。
但这两个配置参数不要同时使用。从节点: 
从服务器的 SQL Thread在Replay中继日志中的事件时,仅读取于特定数据库(数据表)相关的事件,并应用于本地。(但是浪费I/O ,浪费带宽)推荐使用 
从节点复制过滤相关设置项:replicate_do_db =”“;       #复制的白名单
replicate_ingore_db =”“;   #复制的黑名单
replicate_do_table=”“;
relicate_ingore_table=”“;
replicate_wild_do_table=”“;  #更高级别的应用,通配符,应用到哪一类表的。

1.过滤复制的方式

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 |      305 |   白名单      |    黑名单        |                   |
+------------------+----------+--------------+------------------+-------------------+

1)白名单

#从库
replicate-do-db=test
replicate-do-table=test.t1
replicate-wild-do-table=test.t*
#主库
binlog-do-db=test
binlog-do-table=test.t1
binlog-wild-do-table=test.t*

2)黑名单

#从库
replicate-ignore-db=test
replicate-ignore-table=test.t1
replicate-wild-ignore-table=test.t*
#主库
binlog-ignore-db=test
binlog-ignore-table=test.t1
binlog-wild-ignore-table=test.t*

2.配置过滤复制

1)主库创建两个库

mysql> create database wzry;
Query OK, 1 row affected (1.00 sec)mysql> create database lol;
Query OK, 1 row affected (0.00 sec)

2)第一台从库配置

[root@db02 data]# vim /etc/my.cnf
[mysqld]
server_id=2
replicate-do-db=wzry[root@db02 data]# systemctl restart mysqld#查看主从状态
mysql> show slave status\GSlave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: wzry

3)配置第二台从库

[root@db03 ~]# vim /etc/my.cnf
[mysqld]
server_id=2
replicate-do-db=lol[root@db03 ~]# systemctl restart mysqld#查看主从状态
mysql> show slave status\GSlave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: lol

4)验证过滤复制

#1.主库操作
mysql> use wzry
Database changedmysql> create table cikexintiao(id int);
Query OK, 0 rows affected (0.26 sec)mysql> use lol
Database changedmysql> create table fuleierzhuode(id int);
Query OK, 0 rows affected (0.01 sec)#第一台从库查看
mysql> use wzry
Database changedmysql> show tables;
+----------------+
| Tables_in_wzry |
+----------------+
| cikexintiao    |
+----------------+
1 row in set (0.00 sec)mysql> use lol
Database changedmysql> show tables;
Empty set (0.00 sec)#第二台从库查看
mysql> use wzry
Database changedmysql> show tables;
Empty set (0.00 sec)mysql> use lol
Database changedmysql> show tables;
+---------------+
| Tables_in_lol |
+---------------+
| fuleierzhuode |
+---------------+
1 row in set (0.00 sec)

3.配置过滤多个库

1)方法一:

[root@db02 data]# vim /etc/my.cnf
[mysqld]
server_id=2
replicate-do-db=wzry,lol

2)方法二:

[root@db02 data]# vim /etc/my.cnf
[mysqld]
server_id=2
replicate-do-db=wzry
replicate-do-db=lol

4.过滤复制配置在主库

1.配置
[root@db01 ~]# vim /etc/my.cnf
[mysqld]
server_id=1
log_bin=/usr/local/mysql/data/mysql-bin
binlog-do-db=wzry2.查看主库状态
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 |      120 | wzry         |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)3.在主库的wzry库和lol库添加数据4.从库查看数据,只能看到wzry库的数据

5.过滤复制总结

#配置在从库时
1.配置白名单:IO线程将主库的数据拿到了relay-log,但是sql线程只执行白名单配置的数据库相关语句
1.配置黑名单:IO线程将主库的数据拿到了relay-log,但是sql线程只不执行黑名单配置的数据库相关语句#配置在主库时
1.配置白名单:binlog只记录白名单相关的sql语句
2.配置黑名单:binlog只不记录黑名单相关的sql语句

 


http://www.ppmy.cn/server/114837.html

相关文章

利用R语言进行头条主页内容的自动化下载

对于互联网内容的自动化抓取,R语言提供了强大的工具和库来帮助我们实现这一目标。本文将介绍如何使用R语言进行头条主页内容的自动化下载,包括必要的库安装、代理服务器的配置、HTTP请求的发送、内容的解析和保存。 R语言简介 R语言是一种用于统计计算…

BM3D--Image Denoising by Sparse 3-D Transform-Domain Collaborative Filtering

系列文章目录 文章目录 系列文章目录前言稀疏三维变换域协同滤波图像去噪摘要1 引言2 分组和协作过滤A.分组B.按匹配分组C.协同过滤D.基于变换域收缩的协同过滤 3 算法结论 前言 论文地址 如果下载不了可以从 https://download.csdn.net/download/m0_70420861/89708940 获取 …

C语言猜数字小游戏(6)

文章目录 前言一、随机数生成randsrandtime设置随机数的范围 二、猜数字游戏实现总结 前言 掌握了前面所学习的知识,我们可以尝试编写这么一段有趣的代码 今天就来写一个猜数字游戏 游戏要求: 1.电脑自动生成1~100的随机数 2.玩家猜数字,猜数…

Android12——Launcher3文件夹布局修改调整

文章声明:本文是笔者参考良心大佬作品后结合实际需求进行相应的定制,本篇主要是笔者记录一次解析bug笔记,文中可能会引用大佬文章中的部分图片在此声明,并非盈利目的,如涉嫌侵权请私信,谢谢! 大…

vue2实现歌曲播放和歌词滚动效果

需求:需要实现歌词滚动效果。 思路:通过jscss的transform属性完成。 难点:主要就是需要知道正在播放的歌词是那句,然后对正在播放的歌词进行变色和放大,最难的就是让高亮歌词随着歌曲播放滚动。 1.先看效果图 2.处理…

Java 入门指南:Java 并发编程 —— Copy-On-Write 写时复制技术

文章目录 Copy-On-Write使用场景特点缺点CopyOnWrite 和 读写锁相同点之处不同之处 CopyOnWriteArrayList适用场景主要特性方法构造方法CopyOnWriteArrayList 使用示例 CopyOnWriteArraySet适用场景主要特性方法构造方法使用注意事项CopyOnWriteArraySet 使用示例 Copy-On-Writ…

解决服务器VS Code中Jupyter突然崩溃的问题

问题 本来在服务器Anaconda的Python环境里装其他的包,装完了想在Jupyter里写代码验证一下有没有装好,一运行发现Jupyter崩溃了!?报错如下所示 Failed to start the Kernel. ImportError: /home/hujh/anaconda3/envs/mia/lib/pyt…

认识GO语言中的nil,零值与空结构体

go语言的初学者,特别是java开发者新学习go语言,对于一些和java类似但是又有差异的概念很容易混淆,比如说go中的零值,nil 和 空结构体。本文就来详细探讨一下go中这些特殊概念的含义和实际场景中的应用: 零值 零值&…