• 【服务器数据恢复】linux ext3下mysql数据库数据恢复案例


    服务器数据恢复环境:
    MYSQL数据库服务器,2块硬盘组建RAID1;
    DATA卷存储了200多个数据库;
    每天将每个数据库dump出后直接压缩成.gz包,然后将所有重要数据库的.gz 包放在一起压缩成一个总的.tar.gz包,覆盖原来的备份;
    数据文件及备份文件全部存储于DATA卷上。

     

    服务器故障&分析:
    在一次常规的维护中,管理员不小心将DATA卷下的所有文件全部rm,删除后管理员马上关闭系统,再未做其它操作,但在删除那一刻有大量终端在访问此服务器。
    管理员联系我们数据恢复中心要求恢复mysql数据库文件(如myd、frm、myi(可重建)文件),或者每个数据库的.gz包,或者所有重要数据库总的.tar.gz备份包。

    理论上,在ext3文件系统下删除数据会清除inode中除节点类型、日期外的其他属性如文件大小、数据存储地址等,这些属性会全部清0。同时目录表中会以目录条目长度的方式屏蔽掉已删除的文件,但会保留节点编号,最后会改变BITMAP中的空间占用标志。即使是目录表中存在删除文件的节点编号,但因节点内容已经没有需要的东西,与数据区也是脱钩的。
    从数据角度来说,大多数文件类型都会有特定的文件头标志,通过文件头标志是有可能找到删除文件的起始位置的。但EXT3文件系统以块组为单位进行存储,同时数据与索引是混合存储于数据区的,所以数据连续存储的可能性非常小,所以按照文件格式进行处理可行性不大。
    唯一的方案是结合上述几个特征,加上对日志和存储过程的模拟分析,尽可能地还原真实的存储结构。

     

    服务器数据恢复过程:
    1、首先对故障服务器的所有硬盘做完整镜像备份。
    2、基于镜像文件对总的.tar.gz进行分析并尝试恢复,但恢复出来的文件解压到一半左右就报错,后续文件列表也无法列出。经过数据恢复工程师的分析,发现出现这种情况是因为在删除DATA卷下的所有文件时仍有数据写入破坏了文件。
    3、对每个数据库的.gz包进行分析并尝试恢复,大多数数据库的.gz包恢复成功。
    4、对于未恢复成功的数据库.gz包,直接恢复其myd\frm数据文件,最终将所有数据库的.gz包恢复成功。
    5、经过用户亲自验证,恢复出来的数据完整可用。

    服务器数据安全Tips:
    1、LINUX EXT3文件系统下数据删除后应尽快断掉文件系统I/O,通常umount文件系统即可。
    2、对故障卷做dd备份,确保数据恢复操作不会对原始数据进行二次破坏。

     

  • 相关阅读:
    中国大陆五级行政区划数据爬虫
    【Day04_0421】C语言选择题
    where条件中有权限校验的自定义函数优化方法
    APP开发_ js 控制手机横屏或竖屏
    chatgpt赋能python:Python随机选择数字
    操作系统-进程与线程(进程的概念、组成、特征、状态与转化)
    Java设计模式总结
    GBase 8c V3.0.0数据类型——几何操作符
    C- atexit() 用于注册一个函数
    MySQL(case when then end, update)
  • 原文地址:https://blog.csdn.net/beiya123/article/details/127766231