MySQL主从同步从库配置忽略大数据量表的性能优化效果疑问
MySQL从库侧忽略表同步的性能收益说明
- 核心结论:从库侧配置的忽略表规则(如
replicate-ignore-table、replicate-wild-ignore-table等参数)不会被主库感知,主库会将所有表的二进制日志(binlog)全量传输到从库,由从库的SQL线程在执行日志前过滤掉目标表的相关操作。 - 对应的性能收益分为两部分:
- 无法省略的开销:主库到从库的带宽占用、从库IO线程接收binlog并写入中继日志(relay log)的磁盘IO开销,这部分和未配置忽略规则时完全一致。如果大表写入量极高,导致从库网卡、磁盘IO被relay log写入占满,此时从库侧过滤的收益会非常有限。
- 可省略的开销:从库SQL线程执行忽略表相关DML、DDL操作的CPU、磁盘IO开销,这部分通常是从库同步性能的核心瓶颈,尤其是大表的批量写入、索引变更等操作本身耗时极高,过滤后可以大幅降低SQL线程负载,减少主从延迟。
- 优化建议:
- 如果只有当前一个从库,或者所有从库都不需要同步该大表,建议优先在主库侧配置
binlog-ignore-db或者binlog-do-db规则,直接不在binlog中记录目标表的操作,从根源上节省带宽和从库的所有相关开销。 - 如果存在多个从库需要不同的同步规则,无法在主库侧统一配置过滤,可以考虑在主从之间增加数据库代理层进行binlog过滤,既可以避免主库配置的冲突,也能减少无效数据的传输。
- 如果只有当前一个从库,或者所有从库都不需要同步该大表,建议优先在主库侧配置
内容的提问来源于stack exchange,提问作者mxg89
相关产品推荐
相关产品推荐

