专栏首页数据和云数据恢复:如何恢复Linux中意外删除的Oracle和MySQL数据库

数据恢复:如何恢复Linux中意外删除的Oracle和MySQL数据库

张乐奕

云和恩墨副总经理,Oracle ACE总监,ACOUG 联合创始人

没有删除过数据库的DBA职业生涯是不完整的,删除过数据库还能幸存的DBA一定是订阅了“Oracle”公众号。

昨晚有朋友在微信群中求助讨论,误删除了一个MySQL的数据库,整个恢复过程和以下文章中提到的步骤完全相同,只要MySQL主进程还没有退出,从文件句柄中可以恢复文件最终挽回损失。类似的lsof找到那些被标记为Deleted的文件(以下是参考示意图)。

让我们完整的再复习一下这篇文章的步骤,一定要记住这种方法:

今天有客户的数据库意外被删除了整个目录中的数据文件,操作系统级别的删除,然而幸运的是这个数据库没有崩溃,仍然处于 open 状态的时候,客户就发现了问题,求助到我们,最终完整地恢复了所有数据文件。

在 Linux 下大致重新演示一下恢复的过程,恢复的步骤与数据库版本没有太大关系,与操作系统的不同会有所不同。

1. 在数据库 open 的时候,直接删除 users 表空间中的数据文件。

2. 尝试在 users 表空间中创建表,开始报错。

在告警日志中,同样也可以看到类似信息。

3. 检查 dbwr 的进程 PID

4. dbwr 会打开所有数据文件的句柄。在 proc 目录中可以查到,目录名是进程 PID,fd 表示文件描述符。

注意其中“/app/oracle/oradata/ORCL/datafile/o1_mf_users_555wrj4o_.dbf (deleted)”字样,表示该文件已经被删除,如果是 Solaris 操作系统,ls 命令不会有如此清晰的显示,为了在 Solaris 系统中确认哪个句柄对应哪个文件,则需要使用 lsof 程序。

5. 直接 cp 该句柄文件名回原位置。

6. 进行数据文件 recover

完成数据文件恢复。

恢复的原理是,在 Linux 操作系统中,如果文件从操作系统级别被rm掉,之前打开该文件的进程仍然持有相应的文件句柄,所指向的文件仍然可以读写,并且该文件的文件描述符可以从 /proc 目录中获得。但是要注意的是,此时如果关闭数据库,则此句柄会消失,那么除了扫描磁盘进行文件恢复之外就没有其它方法了,因此在数据库出现问题的时候,如果不确认情况的复杂程度,千万不要随便关闭数据库。重启数据库往往是没有意义的,甚至是致命的。

当然,客户的操作系统是Solaris,并且客户删除的文件还包括 current online redo log,因此还有其它更复杂的操作,不在这里描述。

本文分享自微信公众号 - 数据和云(OraNews),作者:张乐奕

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-04-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一文告诉你全世界最顶级的开发者都在使用什么数据库

    作为一名IT行业从业者,其实从去年已经隐隐约约感觉到数据库的有变化,只是没有想到变得这么快。今年的一些事情实实在在地给了某些数据库重击,如果以前去某数据库还是喊...

    数据和云
  • 数据库流行度6月排行榜:Oracle飙升MySQL止跌回升

    六一儿童节,虽然是大家快乐的假期,但是也宣告了2018年进入中场。在DB-Engines的6月排行榜上,不同的数据库产品竞争也进入中场。先预祝大家中场收获满满!...

    数据和云
  • 分库分表就能无限扩容吗,解释得太好了!

    我们在工作中会有各种疑问,刚开始是对 JDK API 的疑问,对 NIO 的疑问,对 JVM 的疑问,当工作几年后,对服务的可用性,可扩展性也有了新的疑问,什么...

    数据和云
  • 值得白嫖的数据库常用操作语句汇总(数据库、数据表、数据操作)

    最近在进行SQL server数据库的相关学习,所以对该数据库的一些常用的操作语句进行了些总结。在这里和小伙伴们一起分享一下。先从最基本的数据库的操作语句开始。

    灰小猿
  • Binder基本使用

    Android开发中,Binder是一种跨进程通信方式,而使用AIDL可以实现Binder的工作。

    233333
  • Zip 压缩、解压技术在 HTML5 浏览器中的应用

    HT_hightopo
  • Zip 压缩和解压技术在 HTML5 中的应用

    JSZip 是一款可以创建、读取、修改 .zip 文件的 javaScript 工具。在 web 应用中,免不了需要从 web 服务器中获取资源,如果可以将所有...

    HT for Web
  • Zip 压缩、解压技术在 HTML5 浏览器中的应用

    JSZip 是一款可以创建、读取、修改 .zip 文件的 javaScript 工具。在 web 应用中,免不了需要从 web 服务器中获取资源,如果可以将所有...

    HT for Web
  • 图解分布式架构的演进

    透明性:是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。

    Java团长
  • 《重构-代码整洁之道TypeScript版》第一天

    看到这个标题你的脑海中一定会浮现出两本书,一本就是,《重构--改善既有代码设计》 和 《代码整洁之道》 。这确实是两本非常伟大的图书,但是很遗憾里面提供的 co...

    疯狂的技术宅

扫码关注云+社区

领取腾讯云代金券