服务器数据恢复-异常断电导致服务器硬盘离线的数据恢复案例

服务器数据恢复环境:

dell某型号服务器中有一组通过raid卡组建的raid10,该raid阵列中一共有4块磁盘。上层部署XenServer虚拟化平台,作为网站服务器使用。

服务器故障:

服务器异常断电导致服务器上的一台虚拟机不可用。需要恢复这台虚拟机上的数据库数据。

服务器数据恢复过程:

1、将故障服务器中所有磁盘编号后取出,由硬件工程师检测没有发现有磁盘存在明显的物理故障。将所有磁盘以只读方式做扇区级别的全盘镜像。镜像完成后将所有磁盘按照编号还原到原服务器中,后续的数据分析和数据恢复操作都基于镜像文件进行,避免对原始数据造成二次破坏。

2、基于镜像文件对底层数据进行分析,经过分析发现服务器中磁盘通过LVM来管理。进入到"/etc/lvm/backup/"目录下查询是否有损坏的虚拟磁盘信息,如果查询有损坏的虚拟磁盘信息就说明LVM信息尚未更新;如果查询没有损坏的虚拟磁盘信息就说明LVM信息已经被更新,只能通过底层数据查找尚未更新的lvm信息。本案例就是从底层数据中查询到尚未更新的lvm信息。

3、找到尚未更新的lvm信息就说明数据还在,可以基于lvm信息分析&查找虚拟磁盘的分区数据,但是经过数据恢复工程师分析发现虚拟磁盘被破坏。经过服务器数据恢复工程师的进一步查找和分析后确认该区域的数据已经被破坏,只发现一些数据库页碎片。

4、数据恢复工程师试图通过拼接碎片来恢复数据。正常情况下rar压缩包的第一个扇区记录文件名,可以根据文件名反向分析压缩包的数据起始位置,将相应的压缩包底层数据提取出来并重命名。但是本案例中提取出来的压缩包解压时报错。

数据恢复工程师尝试使用rar修复工具并设置为忽略错误继续解压部分数据,但是仍然解压失败。

5、在数据库层面分析数据库的开始位置(数据库第九页是当前数据库名称,通过数据库名称反推数据库的开始位置),分析出数据库开始位置后,北亚企安数据恢复工程师根据每个数据库页的编号和文件号去底层数据扫描符合这个数据库页的所有数据,将所有扫描出来的数据重组为一个mdf文件。

6、通过校验程序检测重组出来的mdf文件,检测没有问题后提取数据。经过数据恢复工程师们的分析和重组最终提取出服务器内的所有数据并通过了初步验证。

7、数据恢复工程师搭建数据库环境,将恢复出来的数据库数据附加进去进行查询,查询结果一切正常,本次服务器数据恢复工作完成。

相关推荐
CV工程师的自我修养21 小时前
你的SQL为什么慢?看懂MySQL EXPLAIN执行计划,快速定位性能瓶颈
数据库·mysql
一壶纱21 小时前
UniApp + Pinia 数据持久化
前端·数据库·uni-app
小宇的天下21 小时前
Calibre 3Dstack --每日一个命令day7【Centers】(3-7)
java·服务器·数据库
y_想不到名字21 小时前
MySQL windows版本免安装
数据库·mysql
萧曵 丶21 小时前
MySQL 事务隔离级别及实际业务问题详解
数据库·mysql
lalala_lulu21 小时前
什么是事务,事务有什么特性?
java·开发语言·数据库
_清欢l21 小时前
Dify+test2data实现自然语言查询数据库
数据库·人工智能·openai
哥只是传说中的小白1 天前
Nano Banana Pro高并发接入Grsai Api实战!0.09/张无限批量生成(附接入实战+开源工具)
开发语言·数据库·ai作画·开源·aigc·php·api
南知意-1 天前
Navicat 17 下载安装教程!
数据库·mysql·navicat·数据库连接
l1t1 天前
DeepSeek辅助编写的利用唯一可选数求解数独SQL
数据库·sql·算法·postgresql