top
本文目录
说明
一、恢复表结构
1、创建和原来一样的数据库
2、创建需要恢复的表 (表名需要和恢复的一致)
3、停止 mysql
4、覆盖 frm 文件
5、配置my.ini文件
6、重启 mysql
7、确定表字段个数 (如果知道表字段个数,desc test-table 将正常输出)
8、获取 test-table 的创建语句,重新创建表
二、恢复表数据
1、.ibd与.frm文件解除绑定
2、停止 mysql
3、覆盖 ibd 文件
4、重启 mysql
5、.ibd与.frm文件恢复联系
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!邮件:766378891@qq.com

Mysql 通过 frm 和 ibd 文件恢复使用 InnoDB 引擎的数据


共计 1035 个字符,预计需要花费 3 分钟才能阅读完成。

说明

mysql Myisam 引擎直接复制数据库目录即可。

mysql InnoDB 引擎需要通过 .frm 和.ibd 文件恢复。

一、恢复表结构

1、创建和原来一样的数据库

CREATE DATABASE [IF NOT EXISTS] test-base

2、创建需要恢复的表 (表名需要和恢复的一致)

分两种情况:
1)知道表结构:CREATE TABLE test-table ()
2)不知道表结构:CREATE TABLE test-table (id int) 随便先创建一个

3、停止 mysql

4、覆盖 frm 文件

用原来的 test-table.frm 覆盖新创建的

5、配置my.ini文件

mysqld下 配置 innodb_force_recovery = 6

6、重启 mysql

7、确定表字段个数 (如果知道表字段个数,desc test-table 将正常输出)

1)、查看表结构 desc test-table看见报错。
2)、查看 data 的 err 结尾文件,看见报错 [Warning] InnoDB: Table wangyi/songlyric contains 1 user defined columns in InnoDB, but 6 columns in MySQL.
3)、根据提示从第2步开始新建 create table test-table(id int,id1 int,id2 int,id3 int,id4 int,id5 int);

8、获取 test-table 的创建语句,重新创建表

1)注释 mysqld下 innodb_force_recovery = 6
2)删除表 drop table test-table
3)执行创建表语句新建表
可以看到和之前通过navicat查看得到的创建表的sql语句相比,末尾多了ROW_FORMAT=COMPACT;

二、恢复表数据

1、.ibd与.frm文件解除绑定

恢复表数据需要首先将原先的.ibd文件与原先的.frm文件解除绑定,具体就是在控制台执行下面命令:
alter table test-table discard tablespace;

2、停止 mysql

3、覆盖 ibd 文件

4、重启 mysql

5、.ibd与.frm文件恢复联系

alter table test-table import tablespace;

整个恢复过程其实可以总结为下面几步:
(1) 恢复表结构
(2) 复制出来创建表的 sql 语句
(3) 恢复表数据(在恢复表数据的时候,首先需要解除当前创建的表与默认生成的.ibd文件间的关系,接着将要恢复数据表的.ibd文件与当前创建的表联系起来即可)

提醒:本文发布于711天前,文中所关联的信息可能已发生改变,请知悉!

Tips:清朝云网络工作室

阅读剩余
THE END
icon
0
icon
分享
icon
二维码
icon
海报
发表评论
评论列表

赶快来坐沙发

晚上好👋, 在属于自己的时间好好放松😌~