MySQL5.5.60主从复制sql_thread未应用行格式日志致数据丢失原因排查
MySQL 5.5.60 主从数据丢失:行格式日志未被SQL线程应用的原因
可能的触发因素
slave-skip-errors配置导致事件隐性跳过
MySQL 5.5版本中,若从库配置了slave-skip-errors参数(包含1062、1032等常见主从冲突错误码),当SQL线程应用行格式日志时遇到匹配错误,会自动跳过该事件,且默认不会在错误日志中记录(除非开启log_warnings=2及以上级别),同时SHOW SLAVE STATUS仍显示状态正常,最终导致对应数据变更未被应用。MIXED格式日志转换的版本bug
由于使用binlog_format=MIXED,主库会在特定场景(如包含不确定函数NOW()、UUID()的语句)下将STATEMENT格式转为ROW格式写入binlog,但MySQL 5.5.60存在版本缺陷,从库SQL线程无法正确识别这类转换后的行事件,导致直接跳过执行。中继日志隐性损坏
虽然通过mysqlbinlog能解析到目标数据记录,但中继日志可能存在事件边界或校验信息损坏。SQL线程读取时会校验事件完整性,判定无效后跳过;而日志解析工具仅做文本解析,不校验完整性,因此出现“日志存在但不执行”的矛盾现象。这类损坏通常由从库磁盘IO异常、文件系统错误引发。SQL线程隐性阻塞
部分场景下,SQL线程未停止(Slave_SQL_Running=Yes)但处于隐性阻塞状态,比如等待表锁但未触发超时,导致后续行事件积压未执行。这种情况多伴随从库长事务、慢查询,占用了SQL线程的执行资源。
内容的提问来源于stack exchange,提问作者aaa1993007
相关产品推荐
相关产品推荐

