IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    文件系统格式化MySQL数据库恢复

    惜分飞发表于 2025-06-18 15:38:17
    love 0

    联系:手机/微信(+86 17813235971) QQ(107644445)QQ咨询惜分飞

    标题:文件系统格式化MySQL数据库恢复

    作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

    有客户在做迁移的时候,不慎把存放mysql数据库的硬盘进行了重新分区格式化,重新初始化mysql,并且导入了部分历史数据,不能满足客户需求,希望我们帮忙进行数据恢复.里面大概有100套左右mysql数据库,每个库里面表结构相同,数据不一样.接手这个故障,第一操作就是对磁盘进行镜像,然后使用恢复工具进行底层分析,尝试从文件系统层面恢复出来被格式化之前的数据库文件(需要有对应库目录,不然也没有意义,因为每个库里面表结构一样的,没有正确的库名字无法做到有效的区分),通过底层扫描分析,没有发现一个有效数据文件
    QQ20250618-232447


    对于这样的情况,只能寄希望于mysql 数据块层面扫描恢复,通过工具扫描发现大量的数据块page文件
    block-page

    然后尝试分析字典信息,主要是对于0000000000000001.page对应的表创建语句为:

    CREATE TABLE `SYS_TABLES` (
      `NAME` varchar(255) NOT NULL DEFAULT '',
      `ID` bigint(20) unsigned NOT NULL DEFAULT '0',
      `N_COLS` int(10) DEFAULT NULL,
      `TYPE` int(10) unsigned DEFAULT NULL,
      `MIX_ID` bigint(20) unsigned DEFAULT NULL,
      `MIX_LEN` int(10) unsigned DEFAULT NULL,
      `CLUSTER_NAME` varchar(255) DEFAULT NULL,
      `SPACE` int(10) unsigned DEFAULT NULL,
      PRIMARY KEY (`NAME`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    

    通过上述信息可以获取到name和id列的值(其中name中包含库名/表名),然后再通过0000000000000003.page文件结合对应的表创建语句:

    CREATE TABLE `SYS_INDEXES` (
      `TABLE_ID` bigint(20) unsigned NOT NULL DEFAULT '0',
      `ID` bigint(20) unsigned NOT NULL DEFAULT '0',
      `NAME` varchar(120) DEFAULT NULL,
      `N_FIELDS` int(10) unsigned DEFAULT NULL,
      `TYPE` int(10) unsigned DEFAULT NULL,
      `SPACE` int(10) unsigned DEFAULT NULL,
      `PAGE_NO` int(10) unsigned DEFAULT NULL,
      PRIMARY KEY (`TABLE_ID`,`ID`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    

    这个主要是或者表id和page id的对应关系(表id直接关联SYS_TABLES.ID,然后获取SYS_TABLES.NAME和SYS_INDEXES.ID对应关系,从而可以确定每一个表对应的需要恢复的page文件信息,再通过客户提供的表语句和对应的page关系,实现相关数据恢复,具体操作可以参考以往类似文章:
    xfs文件系统mysql删库恢复
    又一起mysql rm删除数据库目录事故
    [MySQL异常恢复]恢复数据字典表讲解
    [MySQL异常恢复]mysql drop table 数据恢复
    mysql ibd文件反删除恢复之后异常处理
    [MySQL异常恢复]使用工具直接抽取MySQL数据字典
    MySQL drop database恢复(恢复方法同样适用MySQL drop table,delete,truncate table)

    • [MySQL异常恢复]恢复数据字典表讲解
    • 应用连接错误,初始化mysql数据库恢复
    • xfs文件系统mysql删库恢复
    • MySQL勒索恢复
    • [MySQL异常恢复]mysql ibd文件恢复
    • mysql ibd文件反删除恢复之后异常处理
    • mysql 数据库目录被删除恢复
    • frm和ibd文件数据库恢复
    • [MySQL异常恢复]使用工具直接抽取MySQL数据字典
    • A_H_README_TO_RECOVER勒索恢复
    • MySQL 8.0版本ibd文件恢复
    • read_me_recover_tn勒索恢复


沪ICP备19023445号-2号
友情链接