1. 在一个可以正常使用的MySQL数据库中建立一个库

create database back;

2. 在库中创建一个与要恢复表的同名表(字段数量与要恢复的表数量相同,否则后面步骤3中会出错,如果不知道有多少个字段可以在下一步出错时在错误信息中找到)

create table test1( id1 int, id2 int, id3 int );

3. 关闭数据库服务,然后用需要恢复的test1.frm覆盖这个新建的back数据库的test1.frm,接着对配置文件(my.ini)设置innodb_force_recovery = 6,然后使用启动数据库服务

 desc test1;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   | PRI | NULL    |       |
| name  | varchar(10) | YES  |     | NULL    |       |
| age   | int(11)     | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

4. 查看并复制创建表的SQL语句

show create table libraries_information_origin;
+------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table                        | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
+------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| libraries_information_origin | CREATE TABLE `libraries_information_origin` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `url` varchar(5000) DEFAULT NULL,
  `library_name` varchar(255) DEFAULT NULL,
  `column` varchar(2550) DEFAULT NULL,
  `releases` varchar(255) DEFAULT NULL,
  `source_type` varchar(255) DEFAULT NULL,
  `page_type` varchar(255) DEFAULT NULL,
  `note` varchar(255) DEFAULT NULL,
  `note2` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

5、删除test1表,再用复制出来的建表语句重建test1表(复制第4步的SQL语句)

6.关闭数据库服务,接着对配置文件中的innodb_force_recovery = 6删除或者注释,然后使用启动数据库服务

7.将原.ibd文件与原.frm文件解除绑定

alter table test1 discard tablespace;

8.停掉数据库服务,将需要恢复的test1.ibd文件覆盖这个新建的back数据库的test1.ibd,开启数据库服务。

9. 将复制过来的test1.ibd文件与test1.frm文件关联

alter table test1 import tablespace;

 

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。