MySQL中使用InnoDB存储引擎的时候一张表对应着两个物理文件,分别为frm(存储表结构)和ibd(存储数据),但是如果这两个文件均丢失,将会发生如下情况:

test1数据库中的表结构如下: mysql> desc emp;

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

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

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

| id    | int(11)     | YES  |     | NULL    |       |

| name  | varchar(10) | YES  |     | NULL    |       |

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

2 rows in set (0.00 sec)

mysql> select * from emp;

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

| id   | name |

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

|    1 | z1   |

|    2 | z2   |

|    3 | z3   |

|    4 | z4   |

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

4 rows in set (0.00 sec)

先对数据库进行全备:

[root@ace ~]# mysqldump --databases test1 > fullback.dmp

然后模拟删除emp表的frm和ibd文件:

[root@ace test1]# pwd

/var/lib/mysql/test1

[root@ace test1]# rm -rf emp.*

在然后清除缓存

mysql> flush tables;

Query OK, 0 rows affected (0.00 sec)

在对表进行选择时,发现emp已经不存在了。

mysql> select * from emp;

ERROR 1146 (42S02): Table 'test1.emp' doesn't exist

此时该如何对test1中的emp表进行恢复?

我们先尝试使用全备进行恢复

发现报错:

[root@ace ~]# mysql < fullback.dmp

ERROR 1813 (HY000) at line 55: Tablespace for table '`test1`.`emp`' exists. Please DISCARD the tablespace before IMPORT.

然后对emp表进行discard tablespace 操作

mysql> alter table emp discard tablespace;

ERROR 1146 (42S02): Table 'test1.emp' doesn't exist

仍然报错。

手动创建emp表:

mysql> create table emp(id int);

ERROR 1813 (HY000): Tablespace for table '`test1`.`emp`' exists. Please DISCARD the tablespace before IMPORT.

提示表已存在。

在操作系统上可看到ibd文件已自动恢复。

[root@ace test1]# ll

total 552

-rw-rw---- 1 mysql mysql     61 Jun  2 21:12 db.opt

-rw-rw---- 1 mysql mysql   8602 Jun  5 12:56 dept.frm

-rw-rw---- 1 mysql mysql  98304 Jun  5 12:56 dept.ibd

-rw-rw---- 1 mysql mysql  65536 Jun  5 12:54 emp.ibd

-rw-rw---- 1 mysql mysql   8620 Jun  2 21:16 test_cur1.frm

-rw-rw---- 1 mysql mysql  98304 Jun  2 21:16 test_cur1.ibd

-rw-rw---- 1 mysql mysql   8620 Jun  2 21:16 test_cur2.frm

-rw-rw---- 1 mysql mysql  98304 Jun  2 21:16 test_cur2.ibd

-rw-rw---- 1 mysql mysql   8592 Jun  2 21:16 t.frm

-rw-rw---- 1 mysql mysql      0 Jun  2 21:16 t.MYD

-rw-rw---- 1 mysql mysql   1024 Jun  2 21:16 t.MYI

-rw-rw---- 1 mysql mysql   8696 Jun  2 21:16 t_user.frm

-rw-rw---- 1 mysql mysql 114688 Jun  2 21:16 t_user.ibd

现删除emp.ibd文件

然后在test库下创建一个同名的emp表

mysql> use test

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> create table emp(id int);

Query OK, 0 rows affected (0.01 sec)

然后在操作系统层面将test库的emp表对应的两个物理文件拷贝到test1库的目录下。

[root@ace test1]# cp -p ../test/emp.* .

[root@ace test1]# ll

total 596

-rw-rw---- 1 mysql mysql     61 Jun  2 21:12 db.opt

-rw-rw---- 1 mysql mysql   8602 Jun  5 12:56 dept.frm

-rw-rw---- 1 mysql mysql  98304 Jun  5 12:56 dept.ibd

-rw-r----- 1 root  root    8556 Jun  5 13:01 emp.frm

-rw-r----- 1 root  root   98304 Jun  5 13:01 emp.ibd

-rw-rw---- 1 mysql mysql   8620 Jun  2 21:16 test_cur1.frm

-rw-rw---- 1 mysql mysql  98304 Jun  2 21:16 test_cur1.ibd

-rw-rw---- 1 mysql mysql   8620 Jun  2 21:16 test_cur2.frm

-rw-rw---- 1 mysql mysql  98304 Jun  2 21:16 test_cur2.ibd

-rw-rw---- 1 mysql mysql   8592 Jun  2 21:16 t.frm

-rw-rw---- 1 mysql mysql      0 Jun  2 21:16 t.MYD

-rw-rw---- 1 mysql mysql   1024 Jun  2 21:16 t.MYI

-rw-rw---- 1 mysql mysql   8696 Jun  2 21:16 t_user.frm

-rw-rw---- 1 mysql mysql 114688 Jun  2 21:16 t_user.ibd

然后回到test1库中删除emp表

mysql> drop table emp;

Query OK, 0 rows affected (0.00 sec)

发现删除成功

然后再用全备进行恢复。

[root@ace ~]# mysql < fullback.dmp

[root@ace ~]#

恢复成功,无任何报错信息。

mysql> select * from emp;

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

| id   | name |

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

|    1 | z1   |

|    2 | z2   |

|    3 | z3   |

|    4 | z4   |

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

4 rows in set (0.00 sec)

数据也已完全恢复。

以上MySQL小白的个人愚见,欢迎大师指点。

mysql .frm文件丢失_MySQL frm ibd 文件丢失的恢复相关推荐

  1. mysql ibd文件还原_Mysql 通过ibd文件恢复数据

    由于未关闭mysql服务就将服务器重启,导致服务器无法重启,使用fsck修复磁盘后启动服务器后,发现mysql数据文件损坏和丢失,但还存在idb文件. 数据库版本:5.7.20 什么是idb文件 如何 ...

  2. mysql .ibd恢复数据_mysql 根据ibd文件恢复数据

    恢复 recover_user.ibd 文件 1.创建数据库recover_ibd 2.创建相同结构表(若有其他库中相同结构表,可根据show create table recover_user;获取 ...

  3. mysql官网下载后解压是文件夹_mysql解压文件安装

    一直以来都习惯了使用MySQL安装文件(.exe),今天下载了一个.zip版本的MySQL,安装过程中遇到了一些问题,如下: 1.在MySQL官网上(http://dev.mysql.com/down ...

  4. mysql 打开文件数_MySQL打开的文件描述符限制

    如果遇到如下错误: Can't open file: '.\test\mytable.frm' (errno: 24) shell> perror 24 OS error code 24: To ...

  5. mysql日志文件名字_MySQL各类日志文件相关变量介绍

    文章转自:http://www.ywnds.com/?p=3721 查询所有日志的变量 1 mysql>show global variables like'%log%'; GLOBAL表示查全 ...

  6. mysql 导入sql脚本_mysql 导入 sql文件

    mysql 导入数据库有2中方法,一种方法比较简单,直接使用navcat的运行sql文件,知道你的sql文件 直接导入就OK,但是本人导入的时候却出现错误,原因,现在也没搞清楚,第二种就是cmd 导入 ...

  7. mysql 导入sql命令_MySQL导入.sql文件及常用命令

    MySQL导入.sql文件及常用命令 在MySQL Qurey   Brower中直接导入*.sql脚本,是不能一次执行多条sql命令的,在mysql中执行sql文件的命令: mysql> so ...

  8. mysql 5.6密钥_MySQL的密钥文件不正确

    我遇到了InnoDB的问题(表是最初的MyISAM,但是之前将它转换为InndoB)表;我正在尝试运行此查询: SELECT posts.id, posts.post_title FROM rss_p ...

  9. mysql视图表修复_mysql中含有视图数据库在恢复数据时视图变成数据表的解决方法...

    # version:      1.0 for linux # method:       全备份mysql数据 # author:       fengzhanhai # history:      ...

  10. mysql没有frm文件_【1.1】mysql frm文件丢失(ibd文件丢失)

    [1]故障模拟准备环境 这里以innodb为例 [1.1]配置参数 开启独立表空间 innodb_file_per_table; [1.2]构建测试数据 create databasetest;cre ...

最新文章

  1. R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(改变分组次序)实战
  2. 安装Subversion1.82(SVN)
  3. linux下编译动态和静态链接库
  4. Delphi的类与继承
  5. 011_Spring Data JPA多对多关系
  6. C语言程序设计 函数递归调用示例
  7. VS2010中如何实现自定义MFC控件
  8. [Leetcode]@python 107. Binary Tree Level Order Traversal II
  9. 里面怎么模拟裂纹_警惕!你买的翡翠有裂纹吗?它能让翡翠的价值暴跌
  10. MySQL 基础 ———— 变量
  11. [日常工作]非Windows Server 系统远程经常断以及提高性能的方法
  12. poythoncode-实战5--excel 文件读取,文本文件,csv文件,存到系统中以大列表方式进行存储
  13. spring boot 中文文档_已献出膝盖!GitHub上的宝藏级SpringBoot核心文档,讲得太清晰了...
  14. Win11添加新的Microsoft Teams集成:共享屏幕变得更容易
  15. 开发一个App大概要多少钱?
  16. 无限纷争怎么看以前的服务器,无限纷争怎么切换角色 无限纷争切换角色方法...
  17. js:使用amaze select插件
  18. 使用python读取和分析fasta文件
  19. 极坐标梯度公式_梯度的极坐标表达式
  20. 王二是如何看到李四的《艳娘传奇》的,快来了解一下ROS2的话题机制吧!

热门文章

  1. Paper intensive reading (二十五):Fecal Viral ...Virion-Enriched Metagenomics and Metatranscriptomics
  2. 网络安全——防火墙详解
  3. springCloud微服务生态圈囊括—— 服务注册,服务调用,服务降级,熔断。(1)
  4. solidworks创新作业无限魔方
  5. 《OC基础教程》读书笔记3-继承
  6. html京东 重置代码,拟写京东登录界面(HTML - CSS)
  7. 浅谈Android中的Fragment
  8. ftp 连接失败。500 OOPS: cannot change directory:
  9. Eclipse频繁未响应
  10. Python 【趣头条】短视频的自动上传与发布实例演示,同时支持抖音、快手、哔哩哔哩、小红书、微视、西瓜视频、微信视频号等平台的视频自动化同步发布