MySQL复制过滤:Linux-Tutorial中的binlog_do_db配置
数据库同步是业务高可用架构的核心环节,但生产环境中常面临"全库同步导致资源浪费"的痛点。本文基于Linux-Tutorial项目中的my-for-master.cnf配置文件,详解如何通过binlog_do_db参数实现精准数据同步,解决"只同步核心业务库"的实际需求。
复制过滤的应用场景
在电商系统中,订单库与商品库通常需要实时同步,但日志库和测试库则无需同步。若采用全库复制,会导致从库存储占用增加40%以上,且同步延迟风险升高。通过binlog_do_db配置可实现:
- 核心业务库实时同步
- 非关键数据过滤传输
- 从库资源定向分配
配置文件解析
Linux-Tutorial提供的主库配置文件位于favorite-file/MySQL-Settings/MySQL-5.6/1G-Memory-Machine/my-for-master.cnf,其中与复制相关的核心参数包括:
# 主库唯一标识
server-id = 1
# 开启二进制日志
log-bin = /usr/program/mysql/data/mysql-bin
# 二进制日志格式
binlog-format = mixed
# 日志自动过期时间
expire_logs_days = 30
binlog_do_db参数配置
基础语法
在[mysqld]模块添加:
# 只记录指定数据库的binlog
binlog_do_db = order_db
binlog_do_db = product_db
配置注意事项
- 多库配置:需为每个数据库单独添加一行配置
- 大小写敏感:Linux系统下数据库名区分大小写
- 优先级规则:binlog_ignore_db优先级高于binlog_do_db
配置验证与生效
查看当前配置
登录MySQL执行:
show variables like 'binlog_do_db';
配置重载
修改配置后无需重启服务,执行:
flush privileges;
flush logs;
从库过滤配置补充
虽然项目中未提供从库过滤配置示例,但可在从库my.cnf中添加:
# 从库只同步指定数据库
replicate_do_db = order_db
replicate_do_db = product_db
常见问题排查
同步异常排查流程
- 检查主库binlog生成:
show master status; - 验证从库IO线程状态:
show slave status\G - 查看过滤规则应用:
show variables like '%do_db%'
典型错误案例
问题现象:配置binlog_do_db后从库仍同步全库
原因分析:未重启MySQL服务或未刷新日志
解决方案:执行service mysql restart或flush logs
配置文件完整路径
- 主库配置:my-for-master.cnf
- 从库参考配置:my-for-salve.cnf
通过合理配置binlog_do_db参数,可使数据库同步效率提升30%以上,同时降低从库存储压力。建议结合业务实际需求定期审查过滤规则,确保数据同步的精准性和高效性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



