truncate table 不能复制到从库
这篇讲的是 MySQL 5.1.X 版本主从复制中一个容易踩到的坑。作者发现,在特定配置下,master 上执行的 `TRUNCATE TABLE` 操作会“神秘消失”,并不会被同步到 slave 节点。 问题复现的关键在于一套经典的组合配置:使用 MySQL 5.1.31 企业版搭建主从,且服务器设置了 `transaction-isolation = READ-COMMITTED` 和 `binlog_format = MIXED`。在这种环境下,看似简单的表截断操作会绕过复制机制,导致主从数据不一致。 这其实是一个已知的 bug。其核心在于,在 `READ-COMMITTED` 隔离级别配合 `MIXED` 日志格式时,某些 DDL 语句(如 TRUNCATE)可能不会被正确地记录到 binlog 中,或者记录的方式无法让 slave 正确回放。对于依赖主从复制进行读写分离或备份的系统来说,这是一个需要警惕的隐患。 文章通过明确的重现步骤和参数配置,为 DBA 和开发者提供了一个清晰的排障参考。如果你在维护老版本的 MySQL 集群,这篇内容提醒你需要特别关注这类隐性的数据同步风险。