记一次ibd文件数据库恢复过程

记一次ibd文件数据库恢复过程

Jammm
2025-03-24 / 0 评论 / 5 阅读 / 耗时: 58 ms / 正在检测是否收录...

起因

之前服务器安装某个程序需要.net8 要修改glibc更改版本,修改后正常使用,不小心更新宝塔后保存 需要glibc_2.33 2.34,安装2.34的时候直接报错,导致内存异常,ssh连不上,重启后无法进入系统,进入救援模式后,拷贝出数据库data目录文件,进行数据恢复

frm,MYD,MYI文件

这些文件新建一个数据库,把这个三个文件拷贝进去 刷新数据库即可出现表数据,非常简单。

frm,IBD文件

需要一个Linux服务器,下载dbsake后,用dbsake解析出表结构,新建一个表,后删除表空间引用,拷贝ibd文件再使用import导入即可。下面是具体步骤。

  1. 下载dbsake

    curl -s http://get.dbsake.net > dbsake
  2. 给dbsake权限

    chmod u+x dbsake
  3. 拷贝frm文件到服务器,使用dbsake
    将后面的路径以及文件换成你的路径和文件

    ./dbsake frmdump /www/disk1/dbsake/xxx.frm

    运行结果:

    [root@ser3VswS91UBrbe dbsake]# ./dbsake frmdump /www/disk1/dbsake/typecho_weixin.frm 
    --
    -- Table structure for table `typecho_weixin`
    -- Created with MySQL Version 5.7.40
    --
    
    CREATE TABLE `typecho_weixin` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `openid` varchar(64) DEFAULT NULL,
    `name` varchar(32) DEFAULT NULL,
    `mail` varchar(150) DEFAULT NULL,
    `ban` int(10) unsigned DEFAULT '0',
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  4. 创建上面的表
  5. 删除空间引用

    alter table typecho_weixin DISCARD TABLESPACE
  6. 将ibd文件拷贝到你用来恢复机子数据库的目录,若不知道使用以下命令查询

    show variables like '%datadir%';
  7. 复制ibd文件后,导入ibd数据

    alter table typecho_weixin IMPORT TABLESPACE

导入后就可以正常查看了,之后就是导出sql文件去新服务器上执行就行

本文共 300 个字数,平均阅读时长 ≈ 1分钟
0

打赏

海报

正在生成.....

评论 (0)

取消