MySQL磁盘满了后数据文件被损坏

故障现象:一套mysql数据库,数据文件所在的磁盘空间满了,数据库宕机了;清理文件再启动数据库报错[ERROR] InnoDB: Header page contains inconsistent data in datafile,启动不了

尝试innodb force recovery从1-6逐一尝试启动数据库,启动后通过mysqldump重新将表导出导入,当时但是dba反馈数据库启动后就无法导出。应该在尝试一下。

然后,dba报故启动后报错[ERROR] InnoDB: Failed to find tablespace for table XXX in the cache

当时尝试使用innodbchecksum检查执行innochecksum /data/mysql/data_5.7.19/ibdata1都没是没有返回,怀疑是文件没有报错。

知数堂叶老师的办法

复制代码
叶问(20190604):MySQL错误日志出现[Note] InnoDB: Discarding tablespace of table db.table: Data structure corruption产生可能的原因及解决办法?
一、产生原因
从错误日志即可判断出表空间ibd文件发生了物理损坏,那么其中的可能包括如下:
1、数据库服务器异常down机/断电等
2kill -9强制关闭mysqld
3、表空间导出导入过程中发生的ibd文件损坏
4、人为损坏ibd文件
5、底层物理I/O设备损坏,导致文件损坏

二、解决办法
1、从其他实例(如slave)上进行表空间传输进行导入或进行SQL导出导入
2、从历史备份中进行全量+增量恢复完整的ibd文件后再进行表空间传输或进行SQL导出导入
3、尝试innodb force recovery从1-6逐一尝试启动数据库,启动后通过mysqldump重新将表导出导入,建议重3开始
4、考虑使用工具undrop-for-innodb从index page尝试数据恢复
复制代码

undrop-for-innodb参考

undrop-for-innodb工具在无备份的情况下恢复数据库 - 知乎
https://zhuanlan.zhihu.com/p/145245636

MySQL · 数据恢复 · undrop-for-innodb
http://mysql.taobao.org/monthly/2017/11/01/

MySQL · 数据恢复 · undrop-for-innodb - 海东潮 - 博客园
https://www.cnblogs.com/DataArt/p/9873182.html

参考

(3条消息) MySQL借助ibd文件恢复数据技巧_Listen2You的博客-CSDN博客
https://blog.csdn.net/Listen2You/article/details/76283858

MySQL借助ibd文件恢复数据技巧? | 《Linux就该这么学》
https://www.linuxprobe.com/mysql-recovery-data.html

mysql服务器硬盘损坏后的数据恢复-362931297-ChinaUnix博客
http://blog.chinaunix.net/uid-26950862-id-4133641.html

MySQL innochecksum 工具
https://baijiahao.baidu.com/s?id=1653169818857958850&wfr=spider&for=pc

 

posted @   paul_hch  阅读(1165)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2018-05-24 MySQL参数最大连接数max_connections
2017-05-24 iptables NAT规则【转】
点击右上角即可分享
微信分享提示