服务器数据恢复—通过拼接数据库碎片的方式恢复SQL Server数据库数据

devtools/2024/12/23 3:06:56/

服务器数据恢复环境:
一台服务器中有一组由4块STAT硬盘通过RAID卡组建的RAID10阵列,上层是XenServer虚拟化平台,虚拟机安装Windows Server操作系统,作为Web服务器使用。

服务器故障:
因机房异常断电导致服务器中一台VPS(Xen Server虚拟机)不可用,虚拟磁盘文件丢失。

服务器数据恢复过程:
1、将故障服务器中所有磁盘编号后取出,硬件工程师检测后没有发现有磁盘存在硬件故障。以只读方式将所有磁盘进行扇区级全盘镜像,镜像完成后将所有磁盘按照原样还原到原服务器中,后续的数据分析和数据恢复操作都基于镜像文件进行,避免对原始磁盘数据造成二次破坏。
2、基于镜像文件分析所有硬盘底层数据,发现服务器中虚拟机的虚拟磁盘均通过LVM的结构管理,即每个虚拟机的虚拟磁盘都是一个LV。虚拟磁盘采用精简模式。LVM的相关信息在XenServer中都有记载。查看LVM的相关信息并没有发现损坏的虚拟磁盘信息,基本上可以判断LVM的信息已经被更新了。继续分析底层看能否找到未被更新的LVM信息,结果还真在底层发现了还未更新的LVM信息。

3、根据未被更新的LVM信息找到虚拟磁盘的数据区域,发现该区域的数据已被破坏。这种情况极大可能是虚拟机遭遇网络攻击或入侵后导致的。仔细核对这片区域后发现该区域虽然有很多数据被破坏了,但还是发现了很多数据库的页碎片。可以尝试将许多数据库的页碎片拼接成一个可用的数据库。
4、经过北亚企安数据恢复工程师团队会诊后确定以下数据恢复方案。
方案一:根据RAR压缩包的结构可以找到压缩包的数据开始位置,RAR压缩包文件的第一个扇区会记录此RAR的文件名。将备份数据库的压缩包文件名和目前找到的压缩包位置的文件名进行匹配,即可找到备份数据库压缩包的数据开始位置。找到压缩包的位置后仔细分析这片区域的数据,将此区域的数据恢复出来重命名为一个RAR格式的压缩文件。然后尝试解压这些压缩包,发现解压报错。

仔细分析恢复出来的压缩包发现有部分数据被破坏。尝试使用RAR修复工具看能否在设置为忽略错误的情况下解压部分数据。结果修复完成之后解压数据中只有网站的部分代码,并没有发现数据库的备份文件。因此可以判断RAR压缩包中的数据库备份文件已经损坏。
是解压出来的部分网站代码:

方案二:
由于方案一并没有将数据库恢复出来,因此采用方案二。
根据SQL Server数据库的结构去底层分析数据库的开始位置。在数据库的结构中,第9个页会记录本数据库的数据库名。从用户方获取到数据库的名称后,分析底层找到此数据库的开始位置。因为在数据库的每个页中都会记录数据库页编号以及文件号,北亚企安数据恢复工程师根据这些特征编写程序去底层扫描
符合数据库页的数据。将扫描出来的碎片按顺序重组成一个完整MDF文件,再通过MDF校验程序检测整个MDF文件的完整性。
重建的MDF文件:

5、检测没问题后搭建数据库环境,将重组后的数据库附加到搭建好的数据库环境中。查询相关表数据是否正常,查询最新数据是否存在。

6、用户方从网站开发的服务商拿到完整的网站代码搭建好环境,然后将恢复出来的数据库在搭建好的环境中进行测试。经用户测试后,确认数据库没有问题。
 


http://www.ppmy.cn/devtools/110279.html

相关文章

信创那些事儿——Spring Boot中集成东方通中间件(TongWeb)

在Spring Boot中集成东方通中间件(如TongWeb作为Servlet容器)通常涉及几个步骤,但需要注意的是,TongWeb本身是一个独立的Java EE应用服务器,而不是像Tomcat那样可以直接嵌入到Spring Boot应用中的中间件。因此&#xf…

Linux部署hadoop2

Java设置; 创建hadoop要用到的文件夹; hadoop设置; 格式化hdfs; 启动hadoop; 验证hadoop; 接下来就逐步开始吧; 机器规划 本次实战用到了三台CentOS7的机器,身份信息如下所…

Windows安装HeidiSQL教程(图文)

一、软件简介 HeidiSQL是一款开源的数据库管理工具,主要用于管理MySQL、MariaDB、SQL Server、PostgreSQL和SQLite等数据库系统。它提供了直观的用户界面,使用户可以轻松地连接到数据库服务器、执行SQL查询、浏览和编辑数据、管理数据库结构等操作。 跨…

C# 路径操作

一、打开程序所在路径 try{string debugPath System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);System.Diagnostics.Process.Start(debugPath);}catch (Exception ex){MessageBox.Show("无法打开目录:" e…

网站安全需求分析与安全保护工程

网站安全威胁与需求分析 网站安全概念 网站:是基于B/S技术架构的综合信息服务平台,主要提供网页信息及业务后台对外接口服务。 网站安全性: 机密性:网站信息及相关数据不被授权查看或泄露完整性:网站信息及数据不能…

设计模式 装饰模式(Decorator Pattern)

装饰器模式简绍 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。 装饰器模式的基本结构 装饰器模式的基本结构如下&…

如何让Google收录我的网站?

其实仅仅只是收录,只要在GSC提交网址,等个两三天,一般就能收录,但收录是否会掉,这篇内容收录了是否有展现,排名,就是另外一个课题了,如果不收录,除了说明你的网站有问题&…

mysql 生产问题处理

mysql死锁处理 处理方式1 -- 查看 InnoDB 状态 SHOW ENGINE INNODB STATUS;-- 查看死锁日志部分 -- ... 省略其他输出信息 ... ------------------------ LATEST DETECTED DEADLOCK ------------------------ ... 死锁信息 ...-- 根据日志中的线程ID kill 线程 KILL 线程ID1;…