在实际工作中,数据文件被RM -RF掉的情况比较少见,常见的是DROP TABLE ,TRUNCATE TABLE,DELETE FROM TABLE WHERE 1=1;

如果遇到了RM掉数据文件时,千万不要慌张,HOLD住,停止所有的操作,保留现场。下面的方法可以找回丢失的数据文件。

1:创建测试表,写入数据

mysql>  create table tt(a int) engine=myisam;
Query OK, 0 rows affected (0.13 sec)mysql>  insert into tt values(10),(20),(30);
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0mysql>  select * from tt;
+------+
| a    |
+------+
|   40 |
|   50 |
|   60 |
+------+
3 rows in set (0.00 sec)

2:删除表数据文件,APP继续往表里写数据,写入是可以成功的(文件句柄依然存在)

[root@brucetest6 fd]# rm -fr /var/lib/mysql/test/tt*

mysql>  insert into tt values(400),(500),(600);Query OK, 3 rows affected (0.00 sec)Records: 3  Duplicates: 0  Warnings: 0

mysql>  select * from tt;+------+| a    |+------+|   40 ||   50 ||   60 ||  400 ||  500 ||  600 |+------+6 rows in set (0.00 sec)

3:找到MYSQL的进程PID

[root@brucetest6 ~]# netstat -ntlp | grep mysqld
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      31559/mysqld

4:到/proc/PID/fd下找到被删除的文件

[root@brucetest6 ~]# ll /proc/31559/fd|grep a.MY
lrwx------ 1 root root 64 Oct 17 15:46 39 ->  (deleted)/var/lib/mysql/test/tt.MYI
lrwx------ 1 root root 64 Oct 17 15:46 40 ->  (deleted)/var/lib/mysql/test/tt.MYD

5:把文件拷贝回去

[root@brucetest6 fd]# cp 39 /var/lib/mysql/test/tt.MYI
[root@brucetest6 fd]# cp 40 /var/lib/mysql/test/tt.MYD
[root@brucetest6 fd]# ll /var/lib/mysql/test/
total 12
-rw-rw---- 1 mysql mysql   65 Aug  7 17:12 db.opt
-rw-r----- 1 root  root    42 Aug 21 15:14 tt.MYD
-rw-r----- 1 root  root  1024 Aug 21 15:14 tt.MYI

6:此时,还缺少一个tt.frm,这个好办,在另外的库里建一个表结构完全一样的表,把FRM文件拷贝过来就是,修改拷贝过来的文件属主信息。

[root@brucetest6 fd]# ll /var/lib/mysql/test/
total 24
-rw-rw---- 1 mysql mysql   65 Aug  7 17:12 db.opt
-rw-r----- 1 mysql mysql 8554 Aug 21 15:21 tt.frm
-rw-r----- 1 mysql mysql   42 Aug 21 15:14 tt.MYD
-rw-r----- 1 mysql mysql 1024 Aug 21 15:14 tt.MYI

7:数据恢复。

需要注意的是,在RM掉数据文件之后,不要做FLUSH TABLES或者重启数据库操作。

相关博文:

1:http://hcymysql.blog.51cto.com/5223301/1004810

2:http://www.mysqlperformanceblog.com/2012/08/10/recovery-deleted-ibdata1/

转载于:https://www.cnblogs.com/zuoxingyu/archive/2012/10/17/2727843.html

恢复删除了数据文件的表MyISAM相关推荐

  1. LKJ数据文件交接表编制软件

    1. 概述 LKJ数据文件交接表编制软件用来生成"LKJ数-40"(LKJ数据文件交接表),并能够将文件打包. 2. 主界面 3. 结果 下载地址: LKJ数据文件交接表编制软件V ...

  2. 管理表空间和数据文件——维护表空间——改变表空间的读写状态和改变表空间名称...

    默认情况下表空间是处于可读写状态,用户不仅可以查询表空间上的对象数据,而且可以在表空间上执行dml 和ddl 操作.如果表空间只用于存放静态数据,那么为了便于管理和备份恢复,应该将其转变为只读状态:另 ...

  3. 管理表空间和数据文件——维护表空间——设置默认表空间和删除表空间和删除数据文件盒临时文件...

    1.设置数据库默认表空间 当建立数据库时,使用default tablespace 选项可以设置数据库的默认表空间.在建立了数据库之后,使用alter database default tablesp ...

  4. oracle表空间怎么改名字,修改oracle数据文件和表空间名字

    由于不想再重新建新的表空间给客户用,拿旧的直接改,故步骤如下: 一.修改表空间名字 SQL> alter tablespace TMS_RITONG rename to TMS_LYT; Tab ...

  5. oracle表独立数据文件,oracle表空间及数据文件

    1. Oracle 的逻辑结构 数据库的物理结构是由数据库的操作系统文件所决定,每一个 Oracle 数据库是由三种类型的文件组成:数据文件.日志文件和控制文件.数据库的文件为数据库信息提供真正的物理 ...

  6. 管理表空间和数据文件——建立表空间——建立字典管理表空间和建立加密表空间...

    字典管理表空间是为了与早期版本兼容而保留的空间管理特性.当使用字典管理方式时,区数据字典进行管理. 注意:如果建立字典管理表空间,那么要求system表空间必须采用字典管理方式,并且建立时,需要指定e ...

  7. Oracle管理表空间和数据文件详解

    管理表空间和数据文件 介绍 表空间是数据库的逻辑组成部分 从物理上将:数据库数据存放在数据文件中 从逻辑上将:数据库则是存放在表空间中 表空间由一个或是多个数据文件组成 数据库的逻辑结构 介绍: Or ...

  8. [转]Oracle 表空间与数据文件

    转自: http://blog.csdn.net/robinson_0612/article/details/5611738 一.概念 表空间:是一个或多个数据文件的逻辑集合 表空间逻辑存储对象:永久 ...

  9. Oracle的表空间和数据文件

    一. 概念 表空间:是一个或多个数据文件的逻辑集合 表空间逻辑存储对象: 永久段-->如表与索引 临时段-->如临时表数据与排序段 回滚段-->用于事物回滚或闪回内存的撤销数据 表空 ...

最新文章

  1. 汽车线束测试软件,Aigtek线束测试仪,汽车线束测试_高精度自动测试_操作简单...
  2. 大学生创业交流会计算机二级,我校召开第三届“互联网+”大学生创新创业大赛选题交流讨论会...
  3. 浅谈 Celery 分布式队列
  4. 为特使建立控制平面的指南第2部分-识别组件
  5. 在pycharm中使用conda虚拟环境(conda虚拟环境是已经创建好的),解决python安装包文件很费劲的问题
  6. windows下最好的围棋_学围棋能使学习成绩提高吗?
  7. 【数据结构与算法】单链表的Java实现
  8. [k8s]kubeadm k8s免费实验平台labs.play-with-k8s.com,k8s在线测试
  9. 用php写一个单例类,PHP里的单例类写法实例
  10. postman简介与安装步骤
  11. UNP编程:15---UDP之(recvfrom、sendto函数)
  12. c4droid语言字体颜色,c4droid界面与菜单基础教程 | 坐倚北风
  13. 五大领域总目标指南_幼儿园五大领域总目标
  14. 机房重构总结之步履蹒跚
  15. 数据结构课程设计-哈夫曼树及其应用
  16. 计算机会计数据处理流程是怎样的,实现会计电算化后,会计数据的处理流程依旧和手工..._高级会计师_帮考网...
  17. 【java工具方法】十六进制字符串转字符串
  18. 汇编指令: JO、JNO、JB、JNB、JE、JNE、JBE、JA、JS、JNS、JP、JNP、JL、JNL、JNG、JG、JCXZ、JECXZ、JMP、JMPE
  19. Linux Nginx启动报错:Failed at step EXEC spawning /etc/rc.d/init.d/nginx: Exec format error.
  20. 《英语修辞与写作(修订版)》黄任(编著)epub+mobi+azw3格式下载

热门文章

  1. 我38岁,从外企技术高管到失业在家,只因为做错了这件事
  2. 数据分析常用的7大思维方法详解
  3. 案例学习BlazeDS+Spring之五InSync03强类型
  4. java对象的内存分配_java对象在内存的分配问题
  5. 计算机类中外合作办学情况,郑州大学2021年河南省本科一批各专业录取分数统计...
  6. win7 oracle数据库删除用户名,图文帮你win7系统删除Oracle数据库中的用户的具体方法...
  7. 文具订购(【CCF】NOI Online能力测试 入门组第一题)
  8. 电脑专家——DVI-D接口转HDMI接口
  9. CUDA——Windows上CUDA的安装教程
  10. spyder ctrl + 鼠标左键点击函数 无法跳转