场景:
当在企业数据库服务应用当中,如果在主库上有多个数据库业务,希望将不同的数据库业务同步到不同的从库上,实现数据库业务分离;
为了满足以上需求,就可以利用过滤复制功能,将指定的数据信息复制到指定从库上,而不是全备方式同步数据;
基于过滤复制功能,还是可以实现在主从同步数据信息时,排除指定库的数据信息不做主从同步操作;
实现工作机制:
-
解决方案一:在主库上进行限制 ( 不用此方案)
在主库上进行复制同步数据时,主库上存在A、B、C三个数据库信息,若只想复制其中A数据库的数据信息;
可以让数据库服务只记录A数据库的事件日志信息,对于B和C数据库信息进行不写入日志操作;
但是利用这种方法实现主从信息同步的过滤,可能会导致B和C库数据一旦损坏,由于没有记录日志,无法进行恢复的情况;
-
解决方案二:在从库上进行限制
在从库上进行复制同步数据时,利用从库上的SQL线程进行控制,只回放同步过来的A库数据信息,屏蔽其他数据库的信息不做回放;
利用从库进行同步数据过滤,不能减轻主库同步数据的压力,但可以减轻从库进行数据回放的压力;
功能应用实践:
① 查看主从限制过滤参数信息
# 查看主库复制过滤限制参数信息(了解即可)
mysql> show master status;
+------------------+-----------+-------------------+-----------------------+-------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+-----------+-------------------+-----------------------+-------------------------+
| binlog.000004 | 4685 | | | |
+------------------+-----------+-------------------+-----------------------+-------------------------+
1 row in set (0.00 sec)
-- 主库状态信息中,Binlog_Do_DB表示同步复制白名单过滤设置,Binlog_Ignore_DB表示同步复制黑名单过滤设置
-- 过滤白名单表示会记录事件日志信息,过滤黑明白表示不会记录事件日志信息,一般选择其一进行应用即可
-- 可以应用主库的过滤同步功能,实现数据库中默认库的同步复制限制;
# 查看从库复制过滤限制参数信息
mysql> show slave status\G
*************************** 1. row ***************************
Replicate_Do_DB: baimeidashu
Replicate_Ignore_DB: xiaoA
-- 表示库级别的过滤操作,白名单设置表示回放库级别操作,黑名单设置表示忽略库级别操作
Replicate_Do_Table: baimeidashu.t1
Replicate_Ignore_Table: xiaoA.t1
-- 表示表级别的过滤操作,白名单设置表示回放表级别操作,黑名单设置表示忽略表级别操作
Replicate_Wild_Do_Table: baimeidashu.t*
Replicate_Wild_Ignore_Table: xiaoA.t*
-- 表示模糊级别的过滤操作,主要是可以针对多表信息,配置白名单或黑名单;
-- 以上在从库上线实现数据同步过滤机制的参数信息有6个,主要可以分为3组,一般应用使用一个参数即可;
② 数据同步复制过滤效果配置
# 编写配置文件实现过滤
[root@baimeidashu-01 ~]# vim /data/3309/my.cnf
replicate_do_db=ppt
replicate_do_db=word
# 在线调整参数实现过滤
mysql> help change replication filter
mysql> stop slave sql_thread;
mysql> CHANGE REPLICATION FILTER REPLICATE_DO_DB = (word, ppt);
mysql> start slave sql_thread;
-- 一般编写配置文件和在线配置都会进行,可以不重启数据库服务生效过滤机制,日后重启数据库后过滤机制依然生效;
# 查看获取从库过滤配置
mysql> show slave status\G
Replicate_Do_DB: word,ppt
Replicate_Ignore_DB:
③ 进行同步复制过滤效果测试
# 在主库上进行数据库创建模拟
mysql> create database word;
mysql> show slave status\G
*************************** 1. row ***************************
Master_Log_File: binlog.000004
Read_Master_Log_Pos: 4870
-- 从库日志信息同步查看
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| word |
+--------------------+
-- 查看从库数据同步情况
mysql> create database ppt;
mysql> show slave status\G
*************************** 1. row ***************************
Master_Log_File: binlog.000004
Read_Master_Log_Pos: 5052
-- 从库日志信息同步查看
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| ppt |
+--------------------+
-- 查看从库数据同步情况
mysql> create database xiaoA;
mysql> show slave status\G
*************************** 1. row ***************************
Master_Log_File: binlog.000004
Read_Master_Log_Pos: 5240
-- 从库日志信息同步查看
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| |
+--------------------+
-- 查看从库数据同步情况,并未实现xiaoA数据库的复制,即实现了数据同步过滤效果;
欢迎来撩 : 汇总all