面试题答案
一键面试MySQL复制过滤器常见应用场景
- 数据安全与隐私保护:在多租户环境中,某些租户的数据可能包含敏感信息,通过复制过滤器可以确保这些敏感数据不会被复制到非授权的从服务器,从而保护数据隐私。例如,金融机构的客户账户信息,只在特定安全级别的服务器间复制。
- 减轻从服务器负载:从服务器可能资源有限,不需要复制主服务器上的所有数据。通过过滤掉不相关的数据库或表,可减少网络传输和磁盘I/O,提升从服务器性能。比如,日志记录相关的数据库对于报表分析的从服务器并非必需,可过滤掉。
- 数据隔离与业务拆分:不同业务模块可能有独立的数据库,在复制时可按需将特定业务的数据库复制到对应的从服务器。例如,电商系统中,用户管理数据库和商品管理数据库可分别复制到不同用途的从服务器。
基于数据库名的复制过滤简单配置
- 主服务器配置:
- 编辑主服务器的
my.cnf
文件(通常在/etc/mysql/
或/etc/my.cnf
路径下)。 - 在
[mysqld]
部分添加或修改以下配置:
binlog-ignore-db = <database_name_to_ignore>
- 例如,如果要忽略名为
test_db
的数据库,配置如下:
binlog-ignore-db = test_db
- 保存文件并重启MySQL服务使配置生效:
sudo systemctl restart mysql
- 编辑主服务器的
- 从服务器配置:
- 编辑从服务器的
my.cnf
文件。 - 在
[mysqld]
部分添加以下配置:
replicate-wild-do-table = <database_name>%.%
- 例如,只复制名为
production_db
的数据库,配置如下:
replicate-wild-do-table = production_db%.%
- 保存文件并重启MySQL服务。
- 之后需要重新配置复制,先停止从服务器复制:
STOP SLAVE;
- 然后重新设置主服务器信息并启动复制:
CHANGE MASTER TO MASTER_HOST='<master_host_ip>', MASTER_USER='<replication_user>', MASTER_PASSWORD='<replication_password>', MASTER_LOG_FILE='<master_log_file>', MASTER_LOG_POS=<master_log_position>; START SLAVE;
- 这里
<master_host_ip>
是主服务器的IP地址,<replication_user>
和<replication_password>
是用于复制的用户名和密码,<master_log_file>
和<master_log_position>
可在主服务器通过SHOW MASTER STATUS;
命令获取。
- 编辑从服务器的