MySQL 复制过滤功能介绍

©   老男孩老师    /    2017-10-12


怎么进行MySQL 复制和过滤呢?相信每一个正在学习的同学都会有一些这样的疑问,今天老男孩教育小编就给大家解读一下。


首先数据库过滤,数据同步的时候只复制某一个库或者某一个表或某些表的操作,上干货!
1.1 配置介绍
主 [Master]
binlog-do-db-d   代表白名单(仅将指定数据库的相关修改操作记入二进制日志) 缺点:如果主服务器宕了,恢复的时候只可以恢复记录到二进制文件日志里面的数据量。
 binlog-ignore-db   代表黑名单(只要和这里面设置相关的库,都不记录到二进制文件 )
不管是do-db还是ignore-db我们都不建议在主端操作,一旦主库挂了,任何不被记录的数据都将无法还原。
我们不开启do和ignore这个功能,这时候我们主库的binlog是完整的。但是在从库会有很多的二进制可以进行过滤
从[Slave]
replicate-do-db 白名单(只应用哪个数据库到本地 )
replicate-ignore-db 黑名单(忽略哪些数据库到本地)
过滤的功能还可以在表级别实现
replicate-do-table=    应用那些表到本地
replicate-ignore-table=  忽略哪些表到本地
在实现表同步的时候还可以使用通配符 replicate-wild-do-table= (abcdocker.tb%)abcdocker下面的所有tb开头的表 replicate-wild-ignore-table=
通配符%,_ 我们可以一个指令使用多次,只要每次使用的值不同就可以
1.2 例子
例子:例如我们在mysql主从上,只复制abcdocker上的所有数据
从库设置如下
1.vim /etc/my.conf
2.relay-log = relay-log
3.relay-log-index =relay-log-index
4.replicate-do-db = abcdocker [库]
重启mysqld
重启从库之后我们需要开启主从连接,在查看就可以看到我们这里只同步abcdocker库

主库设置如下
1.我们在主库创建2个databases
2.create database abcdocker;
3.create database discuz;
4.因为我们同步discuz库,而不同步abc库。
主库有如下库
1.master-mysql> show databases;
2.+--------------------+
3.| Database           |
4.+--------------------+
5.| information_schema |
6.| abcdocker          |
7.| discuz             |
8.| mysql              |
9.| performance_schema |
10.| shopping           |
11.| test               |
12.+--------------------+
13.7 rows in set (0.00 sec)
我们在去从库使用show databases;查看库是否有discuz和abcdocker库就可以
此时只有abcdocker库一个,因为我们授权的只有一个
1.mysql> show databases;
2.+--------------------+
3.| Database           |
4.+--------------------+
5.| information_schema |
6.| abcdocker          |
7.| mysql              |
8.| performance_schema |
9.| shopping           |
10.| test               |
11.+--------------------+
12.6 rows in set (0.00 sec)

本文章版权归老男孩教育所有。转载请注明出处。有任何疑问可以随时给我们网站留言。
本文链接:http://www.oldboyedu.com/tuijian_wenzhang/index/id/116.html

(2)

分享至