MySQL触发器在主从架构下的表现_MySQL触发器主从同步策略
触发器在从库默认不执行主从复制仅同步binlog事件而非触发器逻辑从库需手动创建且受read_only和DEFINER权限限制可靠替代方案是应用层双写、binlog监听或定时对账。触发器在从库上默认不执行MySQL主从复制只同步 binlog 事件不复制触发器本身更不会在从库自动触发。哪怕你在主库定义了 AFTER INSERT 触发器从库收到的是“插入一行数据”这个操作不是“执行触发器逻辑”。所以从库上的触发器函数、表更新、日志写入等一概不会发生。常见错误现象SHOW TRIGGERS 在从库能看到触发器定义但业务侧发现从库缺少预期的衍生数据比如统计表没更新、审计日志缺失误以为是同步延迟或触发器失效。触发器必须在从库手动创建且逻辑需与主库严格一致包括 DEFINER 用户权限如果触发器里有写操作如 INSERT INTO log_table从库开启 read_onlyON 时会直接报错ERROR 1290 (HY000): The MySQL server is running with the --read-only option so it cannot execute this statement主库触发器若依赖当前时间NOW()、用户变量var或存储过程从库即使执行也无法保证结果一致——因为执行时机和上下文不同binlog_format ROW 时触发器逻辑不被记录这是最常被忽略的底层机制无论 binlog_format 是 STATEMENT 还是 ROW触发器内部的 DML 都不会单独记入 binlog。主库执行 INSERT INTO orders 触发 AFTER INSERT 往 orders_log 插入一条记录binlog 里只有原始的 INSERT INTO orders没有那条日志插入。使用场景你想靠从库同步出一份带审计字段的副表指望触发器自动补全——这条路走不通。 灵办AI 免费一键快速抠图支持下载高清图片