了解MYSQL的都知道,在MYSQL中建立任何一张数据表,在其数据目录对应的数据库目录下都有对应表的.frm文件,.frm文件是用来保存每个数据表的元数据(meta)信息,包括表结构的定义等,.frm文件跟数据库存储引擎无关,也就是任何存储引擎的数据表都必须有.frm文件,命名方式为数据表名.frm,如user.frm. .frm文件可以用来在数据库崩溃时恢复表结构。

下面说说如何通过.frm文件恢复数据表结构。

一. InnoDB表结构的恢复

假定: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)

恢复方法介绍(过程):

1. 在新的正常工作的MYSQL环境下建立一个数据库,比如aa.

2. 在aa数据库下建立同名的数据表test_innodb,表结构随意,这里只有一个id字段,操作过程片段如下:

mysql> create table test_innodb (id bigint not null)engine=InnoDB;

Query OK, 0 rows affected (0.09 sec)

mysql> show tables;

+--------------+

| Tables_in_aa |

+--------------+

| test_innodb |

+--------------+

2 rows in set (0.00 sec)

mysql> desc test_innodb;

+-------+------------+------+-----+---------+-------+

| Field | Type       | Null | Key | Default | Extra |

+-------+------------+------+-----+---------+-------+

| id    | bigint(20) | NO   |     | NULL    |       |

+-------+------------+------+-----+---------+-------+

1 row in set (0.00 sec)

3.停止mysql服务器,将系统崩溃后留下的test_innodb.frm文件拷贝到新的正常数据库的数据目录aa下,覆盖掉下边同名的frm文件:

4.重新启动MYSQL服务。

5.测试下是否恢复成功,进入aa数据库,用desc命令测试下:

mysql> desc test_innodb;

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| A     | int(11)     | YES  |     | NULL    |       |

| B     | varchar(30) | YES  |     | NULL    |       |

| C     | date        | YES  |     | NULL    |       |

+-------+-------------+------+-----+---------+-------+

3 rows in set (0.01 sec)

OK,发现表结构已经恢复过来了。

二. MyISAM表结构的恢复。

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)

恢复过程如下:

1. 直接将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命令报错。

2. 在与test_myisam.frm同一目录建立以下2个文件,文件内容可以为空:

test_myisam.MYD test_myisam.MYI

3. 在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)

根据结果可以知道,恢复命令执行成功,下边用desc命令测试下:

mysql> desc test_myisam;

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| A     | int(11)     | YES  |     | NULL    |       |

| B     | varchar(30) | YES  |     | NULL    |       |

| C     | date        | YES  |     | NULL    |       |

+-------+-------------+------+-----+---------+-------+

3 rows in set (0.02 sec)

果然恢复成功了。

也可以用show create table命令测试下:

mysql> show create table test_myisam;

+--------------+-----------------------------------------------------------------

----------------------------------------------------------------------+

| Table        | Create Table

|

+--------------+-----------------------------------------------------------------

----------------------------------------------------------------------+

| test_myisam | Create TABLE `test_myisam` (

`A` int(11) DEFAULT NULL,

`B` varchar(30) DEFAULT NULL,

`C` date DEFAULT NULL

) ENGINE=MyISAM DEFAULT CHARSET=latin1 |

在恢复MyISAM表结构时,提到MYD文件和MYI文件,这两个文件都专属于MyISAM存储引擎的,前者用来保存MyISAM表的数据,后者用来存放MyISAM表的索引信息。具体在以后的日志再做详细介绍,这里不再赘述。

From:http://blog.sina.com.cn/s/blog_5d3da3280100hymn.html

mysql表只有frm文件_MYSQL数据文件--.frm文件(只有.frm文件时的表结构恢复)相关推荐

  1. mysql数据库熟悉表空间数据文件_MySQL数据文件介绍及存放位置

    MySQL的每个数据库都对应存放在一个与数据库同名的文件夹中,MySQL数据库文件包括MySQL所建数据库文件和MySQL所用存储引擎创建的数据库文件. 1.MySQL创建并管理的数据库文件: .fr ...

  2. mysql 复制数据文件_mysql数据库搬家,可以直接复制数据库文件吗

    诶?这项技术又是什么玩意(What)? 这项技术为什么会存在?我们已经有那么多解决方案(Method)了,我们为什么要用它(Why)? 如果这项技术那么好且我们正好有场景可以用到这项技术,且能使我们的 ...

  3. mysql 表的存储类型_MySQL数据表存储引擎类型及特性

    数据表类型(存储引擎) 常见引擎比对 特点 Myisam InnoDB Memory BDB Archive 存储限制 无穷制 64TB 有 没有 没有 事务安然 - 支撑 - 支撑 - 锁机制 表锁 ...

  4. c++读取.dat文件_MySQL 数据文件类型

    不同的数据文件后缀名:Data and database file extensions A data file could be any file, but for the purpose of t ...

  5. mysql 目录武沛齐_MySQL数据表中的数据操作

    1.插入数据 insert into t_user (username,password,nickname) values ('foye','123','佛爷'); 以下方式必须写出所有的字段 ins ...

  6. mysql备份到带库_MySQL数据备份

    MySQL数据备份 一. MySQL数据损坏类型 1.1.物理损坏 磁盘损坏: 硬件,磁道坏,dd,格式化 文件损坏: 数据文件损坏,redo损坏 1.2.逻辑损坏 drop delete trunc ...

  7. mysql导到相对位置_MySQL数据备份与恢复

    **无论备份还是恢复,都要验证用户及权限** 一.数据备份 1.数据备份的备份方式 物理备份:cp.tar.tar+gzip  -> 兼容性差,目标地址空间大,耗时 系统自带物理备份工具mysq ...

  8. mysql更新数据能回滚吗_MySQL数据回滚-误更新和删除时快速恢复

    这世界上有后悔药 – www.houhuiyao.cc 后悔药数据恢复 站长语 前面的内容也提到过update或delete误更新删除了数据后如何恢复.实际生产环境中常常因各种不同场景导致一些办法有效 ...

  9. mysql中修改表的还原命令_MySQL的增、删、改、查和备份、恢复的命令

    一.增删改查 1.创建数据库 CREATE DATABASE DBname mysqladmin-u root-p create DBname 2.删除数据库 DROP DATABASE DBname ...

最新文章

  1. C#参考之方法参数关键字:params、ref及out
  2. ElasticSearch---------------------step2,了解elasticsearch相关的基本概念
  3. 通过python实现linux切换用户_Python操作远程服务器切换到root用户
  4. 新型发明创造大赛计算机类,2017年发明杯全国高职高专大学生创新创业大赛
  5. 这家大厂手机业务也凉了 改做手表?官方回应让人放心了...
  6. RTOS原理与实现06:计数信号量实现
  7. symbian使用活动对象时返回-2147483647错误值的解决办法
  8. 向iGoogle中添加Google日历及其他小工具
  9. Netty中的Channel之数据冲刷与线程安全(writeAndFlush)
  10. C# 在PowerPoint中给图片添加超链接和获取图片的超链接
  11. 大数据面试3分钟自我介绍_面试的时候,如何自我介绍?
  12. New open source BPM engine——Apache Agila
  13. 华东师范大学2020计算机研究生招生简章,2020华东师范大学计算机考研大纲
  14. Vue的生命周期是什么
  15. 微软服务器2016各版本区别,Win10各版本区别 最强的你绝对没猜到
  16. 英语3500词(18/20)health主题(2022.4.28)
  17. 以更优雅的方式实现弹性架构
  18. 三体视讯获得数千万元天使轮融资,打造新营销渠道“新媒超信”
  19. 清华计算机912考研真题解析
  20. 小程序 | 认识CMS、创建云开发环境、创建并进入CMS内容管理系统

热门文章

  1. mysql group by using filesort优化
  2. 路由框架ARouter最全源码解析
  3. hiho_1089_floyd最短路
  4. Latex \section 使用中文
  5. 鼠标右键新建菜单删除或添加项目
  6. Apache Nutch 1.3 学习笔记十一(页面评分机制 OPIC)
  7. SDN架构的本质属性—Vecloud
  8. JavaScript: 代码简洁之道
  9. 一文读懂TOF深度相机技术原理--TI-Tintin-OPT8241二次开发和应用系列--Theory Level
  10. Maven--传递性依赖和依赖范围