zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    跨域现象及原理分析
    git的commit撤销
    什么是幂等,什么情况下需要幂等,如何实现幂等
    flowable表简要说明
    关于SpringCloud、SpringBoot简单讲解
    常用的maven仓库地址
    Python安装第三方库常用方法
    反编译pyinstaller打包的exe安装包
    测试用例-需要添加@Transactional 这样 就不会再数据库里面留下痕迹了
    断点 太多了 调试运行特别慢-把所有的历史断点都去掉就快了
  • 原文地址:https://www.cnblogs.com/paul8339/p/14803023.html
Copyright © 2011-2022 走看看