公司堡垒机的测试服务器故障无法连接,导致测试数据库也无法连接影响开发进度。
项目目前还在开发初期,虽然数据量不多,但是表结构不少。挨个手动创建也巨废人。
这里用了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;