作者:张宇,北亚MYSQL数据恢复中心,转载请联系作者,如果实在不想联系作者,至少请保留版权,谢谢。
[数据恢复故障描述]
一台重要的MYSQL数据库服务器,146GB*2,RAID1,约130GB DATA卷,存储了大约200~300个数据库。平时管理员对每个数据库dump出以后,直接压缩成.gz包,再将所有重要的.gz 包合起来压缩成一个总的.tar.gz包,这些文件每日产生一次,覆盖原来的备份。数据文件及备份文件全部存储于data卷上。
一次系统维护中,管理员不小心将data卷下的所有文件全部rm,删除后,马上停止系统,再未做其它操作,但删除时仍有大量终端在访问此服务器。
要求恢复mysql数据库文件,即myd、frm、myi(可重建)文件,或每个数据库的.gz包,或所有重要数据库总的.tar.gz备份包。
[数据恢复分析]
  ext3下的数据删除,理论上,会清除inode中除节点类型、日期外的其他属性,诸如文件大小、数据存储地址等属性会全部清0,同时目录表中会以目录条目长度的方式屏蔽掉已删除文件,但会保留节点编号,最后会改变BITMAP中的空间占用标志。
即使是目录表中存在删除文件的节点编号,但因节点内容已经没有需要的东西,与数据区也是脱钩的。
从数据角度,大多数文件类型都会有特定的文件头标志,按头标志是有可能找到删除文件的起始位置的,但EXT3以块组为单位进行存储,同时数据与索引是混合存储于数据区的,所以数据连续存储的可能性非常之小,这样,按文件格式进行处理也是很困难的。
唯一的算法是结合上述几个特征,加上对日志的分析,加上对存储过程的模拟分析,尽可能地逼近真实存储结构。
[数据恢复过程]
  1、对故障卷做完整备份。
  2、对总.tar.gz进行恢复分析,但恢复出来的文件解压到50%左右会报错,后续文件列表也无法列出。经分析,最大的原因是删除时仍有数据写入破坏文件导致。
3、对分包的.gz文件进行恢复分析,大多数恢复成功。
4、对于未恢复成功的.gz数据库。直接恢复其myd\frm数据文件,所有数据恢复成功。
[其他]
  1、LINUX EXT3数据删除后应尽快断掉文件系统IO,通常umount文件系统即可。
2、对故障卷做dd备份,确保数据恢复过程不会导致更严重的故障。

转载于:https://blog.51cto.com/zhangyu/153250

linux ext3下删除mysql数据库的数据恢复案例相关推荐

  1. Linux环境下从MySql数据库导出sql文件

    Linux环境下从MySql数据库导出sql文件(mysqldump命令) 1.导出数据和表结构: 首先要在安装mysql的/bin目录下才可以执行: #/usr/local/mysql/bin/ m ...

  2. Ubuntu下删除mysql数据库

    Ubuntu下删除mysql数据库 sudo apt-get autoremove --purge mysql-server-5.7 sudo apt-get remove mysql-server ...

  3. 成功数据恢复一例LINUX EXT3 下误删除ORACLE数据库

    [申明]     转载请保留原作网站:[url]http://www.sjhf.net[/url] 关键字[LINUX误删除数据恢复] [摘要]     国家认证认可监督管理委员会,用于正常工作的一个 ...

  4. linux系统下配置mysql数据库问题解决。

    一.安装mysql8.0后systemctl启动失败,找不到mysqld服务单元. 解决:打开/etc/my.cnf.d中的mysql-server.conf 查看datadir路径,给文件夹配置权限 ...

  5. Linux虚拟机下安装MYSQL数据库的详细操作

    1.MYSQL数据库的安装过程 1.1安装mysql 首先,我们还是先运行虚拟机,登录进入,再打开Xshell软件,进入之前所设置的会话中,准备进行MYSQL安装的操作命令. 1.查看LUNIX下同下 ...

  6. Linux系统下修改mysql数据库密码

    修改mysql数据库的方法有很多种.这个方法适用于忘记root用户密码或者刚安装mysql要进入mysql时发现系统报错及觉得默认密码太复杂想修改密码的. 1.修改 /etc/my.cnf 文件 在 ...

  7. 在ubuntu下删除mysql数据库

    1. 删除mysql a. sudo apt-get autoremove --purge mysql-server-5.0 b. sudo apt-get remove mysql-server c ...

  8. Linux系统下安装Mysql数据库

    大概就下面几个步骤: 1.挂载磁盘 mount /dev/cdrom /mnt 说明已经挂载了 2. 安装mysql yum install mysql-server -y 3. 启动mysql服务 ...

  9. LINUX下误删除Oracle数据库,数据恢复技术方案

    在LINUX下的Ext3/Ext4文件系统下,如果误删除了数据,数据恢复难度很大.如果说删除的文件数量不大(一般在几百个文件以内),还能够通过.journal日志文件对比残留的inode信息进行恢复, ...

最新文章

  1. Ajax 网页异步调用
  2. C++中sstream的简单使用
  3. jQuery css详解
  4. IntelliJ IDEA类注释模板设置
  5. 近一周学习之-----npm换源工具之nrm
  6. html页面前端乱码,css网页代码乱码怎么解决?
  7. sonic云真机linux分布式部署
  8. OpenLayers坐标转换
  9. 我理解的myisam引擎之六 MYI、MYD文件的解析
  10. 单因素模糊评价matlab,用matlab进行模糊综合评判
  11. 【信息安全】EDR、HIDS、NDR、MDR、XDR 区别与联系
  12. windows 查看端口号
  13. 一种新型免费无损图片格式FLIF
  14. 掌阅Android App插件补丁实践(ZeusPlugin)
  15. #数据结构与算法 第一小题 学生成绩档案管理系统
  16. Vue:页面加载进度条
  17. web移动开发总结(四)
  18. Spring AOP 的 Advice 和 Advisor 有什么区别
  19. linux内存管理笔记(八)---内核临时页表的创建
  20. Redis生产环境你还敢用keys?我劝你放下屠刀,回头是岸!

热门文章

  1. FreeWheel业务系统微服务化过程经验分享
  2. laravel5.5中添加对分页样式的修改上一页和下一页
  3. Linux常用命令--tr
  4. Custom Sharepoint Lookup Field
  5. oracle 10g的安装配置
  6. VIA1708s声卡前置麦克设置问题
  7. 分形——数学与艺术结合的明珠
  8. TRACERT命令及用法
  9. thinkphp6 加载第三方类库_thinkphp中第三方类引入问题
  10. 在php里bd2什么意思,PSR-2 PHP三元语法中是否需要括号?