本文最后更新于 2025-03-24,文章内容可能已经过时。

起因

之前服务器安装某个程序需要.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
  1. 给dbsake权限
chmod u+x dbsake
  1. 拷贝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;
  1. 创建上面的表
  2. 删除空间引用
alter table typecho_weixin DISCARD TABLESPACE
  1. 将ibd文件拷贝到你用来恢复机子数据库的目录,若不知道使用以下命令查询
show variables like '%datadir%';
  1. 复制ibd文件后,导入ibd数据
alter table typecho_weixin IMPORT TABLESPACE

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