MySQL从库同步报主库日志格式错误_重新配置binlog格式

张开发
2026/6/3 11:58:26 15 分钟阅读
MySQL从库同步报主库日志格式错误_重新配置binlog格式
MySQL主库binlog_format设为STATEMENT易致从库同步失败因非确定性函数或自增列引发数据不一致5.7启用GTID后混用STATEMENT与ROW会直接拒绝同步动态修改需重启连接而非mysqldlog_bin关闭会导致“Binary log is not open”错误切ROW后需防控磁盘与网络压力。MySQL主库binlog_format设为STATEMENT导致从库同步失败STATEMENT格式在遇到非确定性函数如NOW()、UUID()、SYS_DATE()或自增列插入时从库重放SQL可能产生不一致触发Slave_SQL_Running: No和Could not execute Write_rows event on table类错误。尤其在5.7版本默认启用GTID后STATEMENT与ROW混用会直接拒绝同步。立即检查主库当前格式SHOW VARIABLES LIKE binlog_format;确认是否含非确定性操作SELECT sql_log_bin, binlog_format; 查看慢日志中是否有UUID()或SYSDATE()写入若主库已运行多年且应用未适配ROW切勿直接改全局变量——需配合SET SESSION binlog_format ROW;逐会话验证修改binlog_format必须重启mysqld不但有前提5.7.7支持动态修改binlog_format但仅对新连接生效已有连接仍沿用旧格式。所以光执行SET GLOBAL binlog_format ROW;不够必须确保所有写入连接重建。先停应用或切流量再执行SET GLOBAL binlog_format ROW;检查所有活跃连接是否已断开SHOW PROCESSLIST;重点关注User为业务账号的Command为Query或Sleep的线程强制刷新连接池如Druid配置removeAbandonedOnBorrowtrue或重启应用服务验证新连接是否生效mysql -u app -p -e SELECT binlog_format;从库报错“Binary log is not open”后无法启动IO线程这是典型主库log_bin未开启或binlog_format被设为NONE的信号。从库尝试拉取binlog时发现主库根本没生成日志直接拒绝连接。 Mokker AI AI产品图添加背景

更多文章