一、先恢复表结构 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
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;
个人学习或者工作过程中的一些简要记录,欢迎各位大神一起指导,共同学习