You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL主从复制至只读副本失败:错误插入为何在副本重放?

MySQL主从复制失败问题解析

问题背景

  • 架构:MySQL主从架构(含只读副本)
  • 表结构:
    ID: integer
    Value: integer
    
  • 引发复制失败的binlog语句:
    insert into `table` (id, value) VALUES (1, '');
    
  • 副本报错信息:
    Error 'Incorrect integer value: '' for column 'value' at row 1' on query.
    
  • 主从库SQL模式:均为STRICT_TRANS_TABLES

核心原因

这是由STRICT_TRANS_TABLES模式的特性和主库存储引擎类型共同导致的:

  • 若主库使用非事务存储引擎(如MyISAM):STRICT_TRANS_TABLES仅对事务表生效,对非事务表只会抛出警告,不会终止语句执行。这条插入空字符串到整数列的语句在主库实际执行成功(或仅触发警告),因此会被写入binlog。
  • 副本重放binlog时,同样的语句触发了STRICT_TRANS_TABLES的严格校验,直接抛出错误,导致复制中断。
  • 即使主库用的是事务引擎(如InnoDB),也存在极端场景:比如语句执行过程中因事务逻辑的特殊处理,未触发严格模式的终止逻辑,最终这条无效语句依然被记录到binlog,进而导致副本重放失败。

内容的提问来源于stack exchange,提问作者eulercode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 13:43:12