1
假定:MYSQL数据库已经崩溃,目前只有对应表的frm文件,大家都知道,frm文件无法通过文本编辑器查看,因为如果不恢复,基本上来说对我们没什么用。这里我们为了测试,假定该文件为test_innodb.frm
该表创建脚本如下:
mysql>create table test_innodb
->(A int(11) default NULL,
->B varchar(30) default NULL,
->C date default NULL) engine=innodb
Query OK, 0 rows affected (0.05 sec)
2
在新的正常工作的MYSQL环境下建立一个数据库,比如aa.
3
在aa数据库下建立同名的数据表test_innodb,表结构随意,这里只有一个id字段, *** 作过程片段如下:
mysql>create table test_innodb (id bigint not null)engine=InnoDB
Query OK, 0 rows affected (0.09 sec)
4
停止mysql服务器,将系统崩溃后留下的test_innodb.frm文件拷贝到新的正常数据库的数据目录aa下,覆盖掉下边同名的frm文件,重新启动MYSQL服务。
END
二. MyISAM表结构的恢复
同样先假定需要恢复的表的FRM文件为test_myisam.frm,表结构为
mysql>create table test_myisam
->(A int(11) default NULL,
->B varchar(30) default NULL,
->C date default NULL) engine=myisam
Query OK, 0 rows affected (0.05 sec)
直接将test_myisam.frm拷贝到正常数据库对应的数据目录下。这时测试
mysql>show tables
+--------------+
| Tables_in_aa |
+--------------+
| test_innodb |
| test_myisam |
+--------------+
3 rows in set (0.00 sec)
mysql>desc test_myisam
ERROR 1017 (HY000): Can't find file: 'test_myisam' (errno: 2)
发现只能通过show tables命令看见表名,但是表结构还是没有恢复,desc命令报错。
在与test_myisam.frm同一目录建立以下2个文件,文件内容可以为空:
test_myisam.MYD test_myisam.MYI
在MYSQL命令行使用MYSQL本身的数据表恢复命令repair命令恢复表,如下:
mysql>repair table test_myisam USE_FRM
+-----------------+--------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+-----------------+--------+----------+----------+
| aa.test_myisam | repair | status | OK |
+-----------------+--------+----------+----------+
1 row in set (0.00 sec)
根据结果可以知道,恢复命令执行成功
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)