四十、过滤复制

过滤复制介绍

主库只想同步一部分数据库或只同步除某些数据库以外的库到从库中去。

主库方面配置

需要用到的参数

mysql> show slave status G
binlog_do_db:#相当于白名单,只同步哪些库
binlog_ignore_db:#相当于黑名单,不同步哪些库

用法
写入配置文件my.cnf中即可,注意有多个库需要写多行

#以下写法为只同步这两个库到从库中区
$ vim /etc/my.cnf
[mysqld]
...
binlog_do_db=world 
binlog_do_db=wordpress 

$ /etc/init.d/mysqld restart

从库方面配置

需要用到的参数

mysql> show slave status G
Replicate_Do_DB: #白名单,SQL线程只回放指定库
Replicate_Ignore_DB: #黑名单,SQL线程不回放这些库

Replicate_Do_Table: #白名单,SQL线程只回放指定表
Replicate_Ignore_Table: #黑名单,SQL线程不回放这些表

Replicate_Wild_Do_Table: #白名单,模糊过滤
Replicate_Wild_Ignore_Table:  #黑名单,模糊过滤

用法,写入配置文件my.cnf中

$ vim /etc/my.cnf
[mysqld]
...
Replicate_Do_DB=world #回放world库
Replicate_Do_Table=wordpress.t1 #回放wordpress库的t1表
Replicate_Wild_Do_Table=world.t* #回放world库下的t开头的表

$ /etc/init.d/mysqld restart

案例

只让从库SQL线程回放指定库

#注意要小写
vim /etc/my.cnf
replicate_do_db=inc1
replicate_do_db=inc2

$ /etc/init.d/mysqld restart

mysql> show slave statusG
Replicate_Do_DB: inc1,inc2

半同步复制

传统的主从复制,主库通过dump线程将日志发给从库的TCP/IP缓存,从库再返回ACK给主库,日志并没有立即写入relay-log文件中,如果此时断电,则会影响主从同步。

而半同步复制,加了一个插件,通过位于应用层的插件来确认接收跟应答ACK,让接收的日志立即写入到relay-log中。如果从库一段时间内无应答,则切换为传统主从复制。

生产环境中很少用到,不详细介绍了,可能面试会问到。

生产环境中常用MGR架构模式,有空我研究一下下。
四十、过滤复制

学习来自:B站课程:MySQL过滤复制/半同步复制 P137-138