mysql 有用 [Server] I/O error reading the header from the binary log

· 会写bug的大佬 · 67阅读 · 2022-11-06

详细描述

mysql服务i o一直在读_Mysql服务启动失败 [Server] I/O error reading the header from the binary log.

版本信息

Mysql 5.7

复现过程

由于服务器内存爆满原因,导致网站服务,mysql服务全都崩掉了,后续为了先紧急启动,删掉了大量缓存日志文件,其中也包括mysql的binlog日志(非万不得已不要删除binlog,删除之前也要做好mysql备份,防止数据丢失)。

本以为万事大吉,第一次启动就报错,no such file or directory  xxxx(binlog文件找不到)

找不到就新建嘛,简单!

随后就出现了如下错误

2022-11-06 18:48:11 14215 [Note] InnoDB: 128 rollback segment(s) are active.
2022-11-06 18:48:11 14215 [Note] InnoDB: Waiting for purge to start
2022-11-06 18:48:11 14215 [Note] InnoDB: 5.6.50 started; log sequence number 1117926976
2022-11-06 18:48:11 14215 [ERROR] I/O error reading the header from the binary log, errno=175, io cache code=0
2022-11-06 18:48:11 14215 [ERROR] I/O error reading the header from the binary log
2022-11-06 18:48:11 14215 [ERROR] Can't init tc log
2022-11-06 18:48:11 14215 [ERROR] Aborting

解决方案

实际上从第一步删除binlog日志就忘了一个东西,那就是日志索引文件,在binlog同级目录下,有一个文件,一般叫xxx.index(windows和linux可能会有细微差别),linux叫mysql-bin.index,里面包含了当前binlog的所有文件索引,在删除binlog后需要删除索引,这样就不会通过索引查找log文件,也不会出现no such file or directory 的问题。

出现I/O error reading the header from the binary log, errno=175, io cache code=0 ,只需要删除索引与自己手动创建的日志文件即可

文章有用

已有 12人 推荐该文章,推荐越多越容易获得的官方扶持

微信扫码分享