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

服务器数据恢复环境:

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

相关推荐
手把手入门8 分钟前
★CentOS:MySQL数据备份
数据库·mysql·adb
SelectDB1 小时前
5000+ 中大型企业首选的 Doris,在稳定性的提升上究竟花了多大的功夫?
大数据·数据库·apache
路多辛1 小时前
Golang database/sql 包深度解析(二):连接池实现原理
数据库·sql·golang
SimonKing1 小时前
Mybatis批量插入,形式不同性能也不同
数据库·后端·程序员
杰克尼2 小时前
MYSQL-175. 组合两个表
数据库·mysql
DemonAvenger2 小时前
MySQL索引原理深度解析与优化策略实战
数据库·mysql·性能优化
189228048613 小时前
NY270NY273美光固态闪存NY277NY287
服务器·网络·数据库·科技·性能优化
星霜笔记6 小时前
Docker 部署 MariaDB+phpMyAdmin+Nextcloud 完整教程
运维·数据库·docker·容器·mariadb
wyiyiyi12 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
天宇_任12 小时前
Mysql数据库迁移到GaussDB注意事项
数据库·mysql·gaussdb