1220 database data_error ai_generated true

错误 1220 (HY000):执行命令 'PURGE BINARY LOGS' 时出错:在文件索引中找不到目标日志文件。

ERROR 1220 (HY000): Error when executing command 'PURGE BINARY LOGS': Could not find target log file mentioned in the file index.

ID: database/mysql-binlog-purge-fail

其他格式: JSON · Markdown 中文 · English
82%修复率
83%置信度
1证据数
2023-09-22首次发现

版本兼容性

版本状态引入弃用备注
MySQL 5.7.42 active
MySQL 8.0.33 active
MySQL 8.0.35 active

根因分析

MySQL 尝试清除二进制日志时,指定的日志文件不在 binlog 索引文件中,通常是因为索引文件损坏、手动删除了日志文件或日志文件路径不匹配。

English

MySQL 尝试清除二进制日志时,指定的日志文件不在 binlog 索引文件中,通常是因为索引文件损坏、手动删除了日志文件或日志文件路径不匹配。

generic

官方文档

https://dev.mysql.com/doc/refman/8.0/en/purge-binary-logs.html

解决方案

  1. 使用 RESET MASTER 命令重置所有二进制日志(注意:会清除所有 binlog,影响复制):RESET MASTER;
  2. 修复 binlog 索引文件:确保索引文件中的路径与实际日志文件匹配,然后使用 PURGE BINARY LOGS TO 'mysql-bin.000010' 清除指定文件之前的日志。

无效尝试

常见但无效的做法:

  1. 70% 失败

    手动编辑 binlog 索引文件,但格式错误或遗漏条目,导致 MySQL 无法正确解析。

  2. 80% 失败

    直接删除 binlog 文件而不更新索引,导致 MySQL 在启动时出错。