一、先恢复表结构 frm

1、创建一个新的库
 
2、创建一个任意一张表 表名与需要恢复得表结构
CREATE TABLE `t_test` (
  `id` varchar(100) NOT NULL COMMENT '数据库主键id',
  `user_name` varchar(255) NOT NULL COMMENT '账号',
  `phone` varchar(255) DEFAULT NULL COMMENT '手机号',
  `name` varchar(255) DEFAULT NULL COMMENT '昵称',
  `password` varchar(255) DEFAULT NULL COMMENT '密码',
  `create_date` varchar(100) DEFAULT NULL COMMENT '创建时间',
  `status` int(255) DEFAULT NULL COMMENT '系统账号状态(0:冻结 1:正常)',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='账号表';
 
 
注意:如果是有原来数据库表的sql,就用原来的,这样后面会少一点出错;如果是未知表结构的,就随便创建一个表就行,但是表名字必须一致
CREATE TABLE `jc_user`( `id` int(1)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
3、关闭Mysql 服务 
net stop mysql
 

 

 

4、修改Mysql 配置文件 My.ini 添加
innodb_force_recovery=1
 

 

 

5、把备份文件中得 frm 文件 拷贝到数据空对应位置
 
6、启动Mysql  
net stop mysql

 

 


注意:如果你是有原来表结构的7、8、9、10、11都不用在继续操作
7、如果启动报错
    一般就是字段不对应的问题,这个如果是你本地有这个对应的表,直接创建这个一模一样的表就不会保存
8、mysql data 目录下dell-PC.err 文件查看错误
提示字段不够 需要创建对应得数量字段
 
9、删除之前得表 重新创建
 
10、重新操作3~6 操作
 
11、如果还不成功可以下面进行修改
 
innodb_force_recovery=1 #修改为 2,3,4,5,6
二、恢复数据 ibd
1、将上一步恢复得表结构进行导出
 
2、关闭mysql 服务
net stop mysql

 

 

3、修改mysql 配置文件
 
#innodb_force_recovery=1
innodb_file_per_table=1
4、启动mysql 服务

 

 

 
5、重新创建表
 
SET FOREIGN_KEY_CHECKS=0;
 
DROP TABLE IF EXISTS `t_test`;
CREATE TABLE `t_test` (
  `id` varchar(100) NOT NULL COMMENT '数据库主键id',
  `user_name` varchar(255) NOT NULL COMMENT '账号',
  `phone` varchar(255) DEFAULT NULL COMMENT '手机号',
  `name` varchar(255) DEFAULT NULL COMMENT '昵称',
  `password` varchar(255) DEFAULT NULL COMMENT '密码',
  `create_date` varchar(100) DEFAULT NULL COMMENT '创建时间',
  `status` int(255) DEFAULT NULL COMMENT '系统账号状态(0:冻结 1:正常)',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='账号表';
 
 
6、执行
 
ALTER TABLEt_test DISCARD TABLESPACE;
7、关闭mysql 服务

 

 

8、将 ibd 文件 拷贝到对应的数据目录
 
9、启动mysql 服务

 

 

10、执行
 
ALTER TABLE t_test IMPORT TABLESPACE;