.frm .ibd恢复mysql数据

公司堡垒机的测试服务器故障无法连接,导致测试数据库也无法连接影响开发进度。
项目目前还在开发初期,虽然数据量不多,但是表结构不少。挨个手动创建也巨废人。
这里用了dbsake小工具来解析frm文件的表结构,然后再覆盖ibd文件来恢复数据。

前提条件

  • 数据库版本需与恢复数据的版本一致
  • 数据库名及字符集一致

1. dbsake

下载dbsake小工具并给工具赋予执行权限

curl -s get.dbsake.net > dbsake && chmod u+x dbsake

2. 将frm文件全部上传至backup目录

mkdir backup

3. 解析出所有表数据结构

./dbsake frmdump backup/*.frm > create_database.sql

4. 创建同名数据库并指定字符集

注:字符集需与恢复数据库一致

CREATE DATABASE 表名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

5. 恢复表结构

use 表名;
source create_database.sql;

至此:数据库表结构已恢复,只不过没有数据


6. 卸载数据表空间

不支持通配符,需挨个卸载

ALTER TABLE 表名 DISCARD TABLESPACE;

7. 查看mysql数据路径

show variables like 'datadir';

进入上述路径,会有一个数据库同名文件夹,将ibd文件上传至此目录即可

8. 再进入mysql恢复数据

ALTER TABLE 表名 IMPORT TABLESPACE;

猜你喜欢

转载自blog.csdn.net/wkh___/article/details/129841002