1236: Got fatal error 1236 from master when reading data from binary log(从 master 读取二进制日志数据时收到致命错误 1236)
MySQL含义
副本(slave)服务器在从源(master)的二进制日志读取数据时收到致命错误,复制已停止。副本在源的 binlog 中找不到它期望的位置。
原因
所需的二进制日志文件在源上已被删除(binlog_expire_logs_seconds —— 8.0 之前为 expire_logs_days,已在 8.4 中移除 —— 或 PURGE BINARY LOGS);GTID 存在缺口/不匹配;源崩溃后 binlog 位置损坏;或副本落后太多,请求了一个已不存在的日志。典型的子消息是 'Could not find first log file name in binary log index file'。
解决方法
检查复制状态:SHOW REPLICA STATUS\G(8.0.22+;旧版本中为 SHOW SLAVE STATUS,旧语法已在 8.4 中移除)。列出源上可用的 binlog:SHOW BINARY LOGS; 如果缺失的日志已被清除,必须从新的备份/GTID 位置重建副本(mysqldump --source-data —— 8.0.26 之前为 --master-data,在 8.0.26+ 中是已弃用的别名 —— 或 CLONE 插件)。根据负载增加源上的 binlog 保留时间;如果使用 GTID,检查 GTID 缺口。
同一数据库的其他条目
- 1049Unknown database 'name'(未知数据库 'name')
- 1364Field 'name' doesn't have a default value(字段 'name' 没有默认值)
- 1206The total number of locks exceeds the lock table size(锁的总数超过了锁表大小)
- 1129Host 'host' is blocked because of many connection errors(主机 'host' 因连接错误过多而被阻止)
- 1194Table 'name' is marked as crashed and should be repaired(表 'name' 被标记为已崩溃,应当修复)
- 1615Prepared statement needs to be re-prepared(预处理语句需要重新准备)
- 1553Cannot drop index needed in a foreign key constraint(无法删除外键约束所需的索引)