明白了,阿杰,你提到的 “Got Fatal Error 1236” 或 MY-013114
Error,通常在 MySQL 复制(Replication)场景下出现,是典型的 主从同步异常。我帮你系统分析原因、排查方法和解决方案。
🧩 MySQL 复制错误:Fatal Error 1236 / MY-013114
一、错误说明
1️⃣ 错误信息示例
Got fatal error 1236 from master when reading data from binary log
或者在 MySQL 8 错误代码中:
ERROR 1236 (HY000): Could not find first log file name in binary log index file
- 错误代码 1236 / MY-013114
- 含义:从库无法读取主库 binlog
二、常见原因
- Binlog 已被清理
- 主库已经删除了从库尚未同步的 binlog
- 常见场景:
expire_logs_days
或手动清理 binlog
- 复制起点偏移不正确
- 从库
MASTER_LOG_FILE
/MASTER_LOG_POS
配置错误 - 例如使用了错误的 GTID 或 binlog 文件
- 从库
- 主库重置过 binlog
- 执行过
RESET MASTER
或PURGE BINARY LOGS
- 导致从库所需的日志不存在
- 执行过
- 网络或权限问题
- 复制账号权限不足
- 网络中断导致从库落后太多
- 主从版本不兼容
- MySQL 主从版本差异较大,binlog 格式不同(ROW/STATEMENT/MIXED)
三、排查步骤
- 查看从库复制状态
SHOW REPLICA STATUS\G
重点关注:
Master_Log_File
→ 主库当前 binlog 文件Read_Master_Log_Pos
→ 从库读取位置Last_SQL_Error
→ 最近的 SQL 执行错误Seconds_Behind_Master
→ 延迟秒数
- 检查主库 binlog 是否存在
SHOW BINARY LOGS;
- 确认从库需要的日志文件是否仍在主库上
- 查看错误 GTID(如果使用 GTID 复制)
SHOW SLAVE STATUS\G
SHOW MASTER STATUS;
四、解决方案
1️⃣ 从最新位置重新同步(最安全)
步骤:
- 停止从库复制
STOP REPLICA;
- 清理旧复制信息(可选)
RESET REPLICA ALL;
- 使用主库最新 binlog 重新配置复制
CHANGE REPLICA TO
SOURCE_HOST='主库IP',
SOURCE_USER='repl_user',
SOURCE_PASSWORD='密码',
SOURCE_LOG_FILE='最新binlog文件',
SOURCE_LOG_POS=最新位置;
- 启动复制
START REPLICA;
✅ 优点:安全可靠
❌ 缺点:可能需要全量备份 / snapshot
2️⃣ 使用 GTID 方式同步(推荐 MySQL 8+)
- 在主库启用 GTID:
[mysqld]
gtid_mode=ON
enforce_gtid_consistency=ON
- 在从库重置复制:
STOP REPLICA;
RESET REPLICA ALL;
CHANGE REPLICA TO
SOURCE_HOST='主库IP',
SOURCE_USER='repl_user',
SOURCE_PASSWORD='密码',
SOURCE_AUTO_POSITION=1;
START REPLICA;
✅ GTID 自动选择正确日志,无需手动指定 binlog 文件
3️⃣ 检查权限与网络
- 复制账号必须有以下权限:
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl_user'@'%';
- 确保从库可访问主库端口(默认 3306),无防火墙阻挡
- 延迟太多时,可临时关闭半同步复制或增加
rpl_semi_sync_source_timeout
4️⃣ 避免问题的最佳实践
- 定期备份从库或使用 GTID + snapshot
- 配置合理的 binlog 保留时间:
expire_logs_days=7
- 小心执行
RESET MASTER
/PURGE BINARY LOGS
- 避免主库长时间落后于从库,及时监控复制延迟
五、总结
- Fatal Error 1236 / MY-013114 = 从库无法找到主库需要的 binlog
- 原因:
- binlog 被清理
- 复制起点错误
- 主库日志重置
- 权限或网络问题
- 解决方案:
- 停止从库 → 重新指定 binlog / GTID → 启动复制
- 推荐使用 GTID 自动同步,避免手动指定日志文件
- 配置合理的 binlog 保留策略
发表回复