`

MYSQL使用.frm恢复数据表结构的实现方法

阅读更多

我们都知道当我们建立数据表(innodb或myisam)时,会生成相应的文件(如:MYD,MYI,frm)
在这里,我们探讨下使用frm文件恢复 innodb和myisam类型表的结构,不过由于他们存储引擎的特性,所以恢复的方法也不一样,以下是详细的恢复过程。

myisamchk "xxx.frm" myisamchk 可以试出来,库是不是 myisam 类型

1:恢复innodb类型数据表结构
我们先从test数据目录 copy一个innodb.frm文件到另外一个库(innodb)

复制代码 代码如下:

mysql> USE innodb;
mysql> DATABASE changed
mysql> SHOW CREATE TABLE innodb;
ERROR 1146 (42S02): TABLE 'innodb.innodb' doesn't exist


说明拷贝过来的文件是不能直接使用的,然后我们建立另外一个库(tmp),并在这个库里建立一个innodb类型的表

复制代码 代码如下:

mysql> CREATE DATABASE tmp;
mysql> CREATE TABLE innodb (`id` int(11) NOT NULL) ) ENGINE=InnoDB
DEFAULT CHARSET=utf8;



然后我们copy innodb下的 innodb.frm 到 tmp数据目录下,并覆盖tmp目录下的innodb.frm
下面我们 restart mysql 试试

复制代码 代码如下:

mysql> SHOW CREATE TABLE innodb \G;
*************************** 1. row **********
TABLE: innodb
CREATE TABLE: CREATE TABLE `innodb` (
`dd` varchar(1) NOT NULL,
`cc` varchar(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row IN SET (0.00 sec)
ERROR:
No query specified
mysql> INSERT INTO innodb (dd,cc) value (1,2);
mysql> Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM innodb;
ERROR 2013 (HY000): Lost connection TO MySQL server during query



所以数据结构是可以看到的,但是不可以查询,好了,这就是使用.frm恢复 innodb类型的表结构
2:恢复myisam类型数据表结构
恢复myisam类型的就简单多了,我看下面步骤
首先还是和上面一样,从test数据目录下 copy一个test.frm 到 tmp库的数据目录

复制代码 代码如下:

mysql> USE tmp;
mysql> SHOW CREATE TABLE test;
ERROR 1017 (HY000): Can't find file: 'test' (errno: 2)


提示找不到文件,下面我们来处理错误,在tmp数据目录下建立 test.MYI 和 temp.MYD 文件,然后我们使用mysql自带的修复表命令

复制代码 代码如下:

mysql> repair TABLE test USE_FRM;
+------------------+--------+----------+----------+
| TABLE | Op | Msg_type | Msg_text |
+------------------+--------+----------+----------+
| test.test_myisam | repair | STATUS | OK |
+------------------+--------+----------+----------+
1 row IN SET (0.00 sec)

mysql> SHOW CREATE TABLE test \G;
*************************** 1. row **********
TABLE: test
CREATE TABLE: CREATE TABLE `test` (
`dd` varchar(1) NOT NULL,
`cc` varchar(1) NOT NULL
) ENGINE=myisam DEFAULT CHARSET=utf8
1 row IN SET (0.00 sec)
ERROR:
No query specified
mysql> INSERT INTO test (dd,cc) value(1,2);
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM test;
+------+
| dd | cc
+------+
| 1 |2
+------+
1 row IN SET (0.00 sec)



好了,这个表结构也看到了

分享到:
评论

相关推荐

    记一次mysql根据.frm.ibd文件恢复数据

    记一次mysql根据.frm.ibd文件恢复数据 背景: 公司用的阿里云mysql 5.6数据库,阿里云的控制台上做了两天一备份的设置。当我发现我误操作drop了一张表之后,我从控制台上下载了备份的压缩包,解压之后拿到我drop的那...

    详解MySQL中InnoDB的存储文件

    在MYSQL中建立任何一张数据表,在其数据目录对应的数据库目录下都有对应表的.frm文件,.frm文件是用来保存每个数据表的元数据(meta)信息,包括表结构的定义等,.frm文件跟数据库存储引擎无关,也就是任何存储引擎的...

    Mysql数据库误删恢复方法.docx

    Mysql数据库忘记备份数据库,通过.frm和.ibd文件恢复数据的方法,最后只能通过恢复工具找到数据库的.frm和.ibd文件, 整个恢复过程其实可以总结为下面几步: (1):恢复mas2020数据库文件 (2):恢复表结构 ...

    通过.frm文件对表结构的恢复工具utilities(linux版本)

    (3):恢复表数据(在恢复表数据的时候,首先需要解除当前创建的表与默认生成的.ibd文件间的关系,接着将要恢复数据表的.ibd文件与当前创建的表联系起来即可) 1.通过官网下载mysql-utilities-1.6.5.tar.gz...

    mysql.sql只有数据表结构的.zip

    mysql5.7数据库数据表,用于初始化和拯救数据,配合https://blog.csdn.net/u012442504/article/details/102513780,进行使用,效果绝佳,立竿见影,这个只有数据表结构,用于快速拯救数据库,修复官方的innodb_table...

    mysql 从 frm 文件恢复 table 表结构的3种方法【推荐】

    当遇到故障,通常使用新的 mysql 实例来恢复当前的数据。 建表是非常重要的步骤,我们必须有其它的方法来寻找 table 的结构。 table 结构定义在哪里 通常关注的用户数据,底层都实际存储在 mysql 数据目录。  其它...

    数据库恢复,恢复表结构读取frm文件

    mysql的灾后重建,前提是frm文件还存在,mysql的表结构文件是保存在frm文件中的,数据文件保存在ibd文件中,这个windows版本的工具测试后发现只能读取表结构,但不能读取视图,读取视图的frm需要用linux版本的dbsake

    InnoDB 类型MySql恢复表结构与数据

    恢复表结构 1.新建一个数据库–新建一个表,表名和列数和需要恢复数据库相同 2.停止mysql服务器 service mysql stop , 3.在/usr/local/mysql/my.cnf 里面添加innodb_force_recovery = 6 4.将需要恢复的表.frm格式...

    dbseeker_frm1.0.zip

    将.frm文件翻译出创建表的sql语句,用于Mysql等数据库的数据表结构恢复操作

    frm文件结构恢复2.0.rar

    可以利用数据库的frm文件恢复表的结构语句,

    DU-MySQL-Search-Win-V6.3

    当mysql被删库、删表、勒索病毒破坏后,用文件恢复工具通常无法恢复出表文件,或者恢复出的表文件内容为乱码,mysql无法正常识别加载,这时需要用mysql碎片扫描工具扫描残存的表数据,可搜索mysql5/8版本InnoDB表...

    mysql5.7操作文档大全

    一. 概述 5 二. 卸载MySQL数据库 6 2.1 备份数据库 6 2.2 卸载MySQL数据库 6 2.2.1 检查MySQL服务并关闭服务进程 6 2.2.2 查找MySQL的安装目录并彻底删除 6 ...10.1.2 修改新建的数据表结构为17个字段 43

    mysql数据备份与恢复实现方法分析

    本文实例讲述了mysql数据备份与恢复实现方法。分享给大家供大家参考,具体如下: 本文内容: 复制文件法 利用mysqldump 利用select into outfile 其它(列举但不介绍) 首发日期:2018-04-19 有些时候,在备份...

    浅谈MySQL数据库的备份与恢复

    一、MySQL 常见的备份方式 1. 直接拷贝数据库文件(物理拷贝) 2. 使用 mysqldump 工具备份 3. 使用 mysqlhotcopy 工具备份 4. 使用 mysql 的主从同步复制,...表结构信息:.frm 数据信息:.myd 数据索引信息;.myi >>

    mysql表物理文件被误删的解决方法

     3、该方法同样适用于数据表迁移(只迁移一个表) 因为discard再import的速度 远比先dump再恢复的速度要快得多 建议: 平时备份一下表结构是非常重要的 — 如果你直接删除了mysql的表文件 (.frm .idb) 在mysql5.6...

    mysql面试题,包含面经文档、技术要点或面试编程题等

    - 存储结构方面,MyISAM将每张表存放在frm(表格定义)、MYD(数据文件)、MYI(索引文件)三个文件中,而InnoDB的所有表都保存在同一个数据文件中。 - 在存储空间上,由于MyISAM的数据是以文件的形式存储,所以占用...

    计算机专业毕业实习日记.docx

    frm、MYI、MYD分别对应MyISAM表的表结构\索引\数据文件; frm,myd,myi是属于MySQL存储数据的文件,phpMyAdmin是无法导入的。 phpMyAdmin支持的文件格式为sql文件。 frm格式 MYD格式MYI格式文件导入MySQL中的方法: ...

Global site tag (gtag.js) - Google Analytics