mysql .frm文件丢失_MySQL frm ibd 文件丢失的恢复
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 文件丢失的恢复相关推荐
- mysql ibd文件还原_Mysql 通过ibd文件恢复数据
由于未关闭mysql服务就将服务器重启,导致服务器无法重启,使用fsck修复磁盘后启动服务器后,发现mysql数据文件损坏和丢失,但还存在idb文件. 数据库版本:5.7.20 什么是idb文件 如何 ...
- mysql .ibd恢复数据_mysql 根据ibd文件恢复数据
恢复 recover_user.ibd 文件 1.创建数据库recover_ibd 2.创建相同结构表(若有其他库中相同结构表,可根据show create table recover_user;获取 ...
- mysql官网下载后解压是文件夹_mysql解压文件安装
一直以来都习惯了使用MySQL安装文件(.exe),今天下载了一个.zip版本的MySQL,安装过程中遇到了一些问题,如下: 1.在MySQL官网上(http://dev.mysql.com/down ...
- mysql 打开文件数_MySQL打开的文件描述符限制
如果遇到如下错误: Can't open file: '.\test\mytable.frm' (errno: 24) shell> perror 24 OS error code 24: To ...
- mysql日志文件名字_MySQL各类日志文件相关变量介绍
文章转自:http://www.ywnds.com/?p=3721 查询所有日志的变量 1 mysql>show global variables like'%log%'; GLOBAL表示查全 ...
- mysql 导入sql脚本_mysql 导入 sql文件
mysql 导入数据库有2中方法,一种方法比较简单,直接使用navcat的运行sql文件,知道你的sql文件 直接导入就OK,但是本人导入的时候却出现错误,原因,现在也没搞清楚,第二种就是cmd 导入 ...
- mysql 导入sql命令_MySQL导入.sql文件及常用命令
MySQL导入.sql文件及常用命令 在MySQL Qurey Brower中直接导入*.sql脚本,是不能一次执行多条sql命令的,在mysql中执行sql文件的命令: mysql> so ...
- mysql 5.6密钥_MySQL的密钥文件不正确
我遇到了InnoDB的问题(表是最初的MyISAM,但是之前将它转换为InndoB)表;我正在尝试运行此查询: SELECT posts.id, posts.post_title FROM rss_p ...
- mysql视图表修复_mysql中含有视图数据库在恢复数据时视图变成数据表的解决方法...
# version: 1.0 for linux # method: 全备份mysql数据 # author: fengzhanhai # history: ...
- mysql没有frm文件_【1.1】mysql frm文件丢失(ibd文件丢失)
[1]故障模拟准备环境 这里以innodb为例 [1.1]配置参数 开启独立表空间 innodb_file_per_table; [1.2]构建测试数据 create databasetest;cre ...
最新文章
- R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(改变分组次序)实战
- 安装Subversion1.82(SVN)
- linux下编译动态和静态链接库
- Delphi的类与继承
- 011_Spring Data JPA多对多关系
- C语言程序设计 函数递归调用示例
- VS2010中如何实现自定义MFC控件
- [Leetcode]@python 107. Binary Tree Level Order Traversal II
- 里面怎么模拟裂纹_警惕!你买的翡翠有裂纹吗?它能让翡翠的价值暴跌
- MySQL 基础 ———— 变量
- [日常工作]非Windows Server 系统远程经常断以及提高性能的方法
- poythoncode-实战5--excel 文件读取,文本文件,csv文件,存到系统中以大列表方式进行存储
- spring boot 中文文档_已献出膝盖!GitHub上的宝藏级SpringBoot核心文档,讲得太清晰了...
- Win11添加新的Microsoft Teams集成:共享屏幕变得更容易
- 开发一个App大概要多少钱?
- 无限纷争怎么看以前的服务器,无限纷争怎么切换角色 无限纷争切换角色方法...
- js:使用amaze select插件
- 使用python读取和分析fasta文件
- 极坐标梯度公式_梯度的极坐标表达式
- 王二是如何看到李四的《艳娘传奇》的,快来了解一下ROS2的话题机制吧!
热门文章
- Paper intensive reading (二十五):Fecal Viral ...Virion-Enriched Metagenomics and Metatranscriptomics
- 网络安全——防火墙详解
- springCloud微服务生态圈囊括—— 服务注册,服务调用,服务降级,熔断。(1)
- solidworks创新作业无限魔方
- 《OC基础教程》读书笔记3-继承
- html京东 重置代码,拟写京东登录界面(HTML - CSS)
- 浅谈Android中的Fragment
- ftp 连接失败。500 OOPS: cannot change directory:
- Eclipse频繁未响应
- Python 【趣头条】短视频的自动上传与发布实例演示,同时支持抖音、快手、哔哩哔哩、小红书、微视、西瓜视频、微信视频号等平台的视频自动化同步发布