【服务器数据恢复】使用碎片拼接方法恢复SQL Server数据库的数据恢复案例
创始人
2025-05-31 05:32:02

服务器数据恢复环境:
某公司一台DELL服务器,作为WEB服务器使用,安装的Windows Server操作系统,配置了SQL Server数据库;
采用了Xen Server虚拟化系统;
底层是通过raid卡,用4块STAT硬盘搭建的RAID10。

服务器故障:
服务器意外断电导致虚拟机磁盘丢失,虚拟机不可用。需要恢复SQL Server数据库。

服务器数据恢复过程:
1、将故障服务器中所有硬盘以只读方式进行镜像备份,后续的数据恢复分析和数据恢复操作都基于镜像文件进行,不会对原服务器做任何操作,保证原服务器初始状态,避免对原始数据造成可能的二次破坏。
2、基于镜像文件对底层数据进行分析,发现故障服务器中丢失的虚拟机磁盘都采用了LVM的结构。进入到“/etc/lvm/backup/”目录下查询看是否有损坏的虚拟磁盘信息,如果有就意味着LVM信息尚有保存;如果没有就意味着虚拟磁盘信息已经被更新,只能通过底层数据查找没有更新的lvm信息。本案例中北亚企安数据恢复工程师从底层数据中查询到了尚未更新的lvm信息,见下图:

 

3、找到lvm信息就意味着数据还在。基于lvm信息分析&查找虚拟磁盘的分区数据,但是数据恢复工程师经过分析后竟然发现虚拟磁盘被破坏了,这种现象非常少见。经过进一步查找和分析后确认该区域的数据确实被破坏了,只能找到一些数据库页碎片,可以通过数据库碎片拼接的手段来恢复数据,即根据数据库结构,将底层找到的数据库的页碎片按照原先的顺序拼接起来,然后对数据库进行修复和校检后即可恢复数据库。
4、试图通过数据库备份来恢复数据库。因为之前数据库做过一次备份,数据库备份文件和网站代码被一起压缩到一个RAR压缩包文件中。正常情况下rar压缩包的第一个扇区记录的是文件名,所以可以根据文件名反向查找压缩包的数据起始位置,把相应的压缩包底层数据提取出来并重命名。但是在实际的恢复过程中却出现了意外,提取出来的压缩包解压时报错,报错信息见下图:

 

5、尝试使用rar修复工具(设置为“忽略错误”)继续解压数据,仍然解压失败。常规的数据恢复方法行不通。只能通过数据库碎片拼接来恢复数据库数据。
6、在数据库层面分析数据库开始位置,分析出数据库开始位置后根据每个数据库页的编号和文件号去底层扫描符合这个数据库页的所有数据,最后由北亚企安数据恢复工程师将所有扫描出来的数据重组为一个mdf文件。经过校验程序检测合格后提取数据。重组后的mdf文件见下图:
 

 

数据验证:
经过北亚企安数据恢复工程师团队的不懈努力,最终将服务器内的数据全部提取出来并通过初步验证。搭建了数据库环境,将恢复出来的数据库数据附加上去进行查询,最新数据都查询正常。本次数据恢复完成。恢复结果见下图:

 

相关内容

热门资讯

游戏服务器是什么怎么租用 游戏服务器是什么怎么租用 我是艾西,作为一个常年与游戏行业保持着高频率的服务器供应商&...
Flink-转换算子  基本转换算子         map(映射)         filter(过滤&#...
2023年金三银四大厂高频Ja... Java 面试 谈到 Java 面试,相信大家第一时间脑子里想到的词肯定是金三银四&#...
C语言手撕一个Hash表(Ha... 什么是Hash Table 散列表用的是数组支持按照下标随机访问数据的特性,所以散列表...
springMVC01- 文章目录今日目标一、SpringMVC简介1 SpringMVC概述问题导入1.1 SpringMV...
Electron开发的应用利用... 技术选型: 1、electron:21.3.3 2、electron-v...
【Elastic (ELK) ... 目录 一、ES 基本概念介绍 1.1 ES 是什么 1.2 ES 主要功能 1.3 ES 相关术语 ...
指定wb用户在指定日期范围内的... 一、操作步骤 只记录过程,不讲述原理 1.获取用户ID和cookie 用户ID在进入个...
sheng的学习笔记-IO多路... 基础概念IO分为几种:同步阻塞的BIO,同步非阻塞的NIO,...
接口自动化测试(Python+...  目录:导读 (1)接口自动化测试的优缺点 (2)Pyth...
重构条件-Consolidat... 重构条件-Consolidate Conditional Expression合并条件式二 1.合并...
【论文阅读】BiSeNet V... 前言BiSeNet V2延续了v1版本的双边结构,分别处理空间细节信息、高层语义信息。...
二、马尔可夫决策过程与贝尔曼方... 这里写目录标题1 马尔可夫性质2 马尔可夫过程3 马尔可夫奖励过程(Markov re...
golang端口重用 文章目录前言SO_REUSEADDR简介Python中的用法golang用法其他学习总结 前言 服...
Zabbix“专家坐诊”第18... 问题一 Q:Zabbix5.0版本,如图,请问这里怎么修改...
深度学习技巧应用5-神经网络中... 大家好,我是微学AI,今天给大家带来深度学习技巧应用5-神经网络中的模型...
Mongodb 常用基本语法与... 常用操作 1、 Help查看命令提示 db.help(); 2、 切换/创建数据库 use t...
java中Long型数据大小比... 起因 今天在做项目的时候,想构建一个树形结构,从数据库中查询出了所有数据...
【Linux】-- 进程概念 基本概念进程(Process):是操作系统进行资源分配的最小单位。一个进程是一个程序的一次执行过程。...
2023-03-22干活小计: transformer: position-embedding: 残差:我也会了 ad...
verilog(基础知识) 摘要:主要写自己的学习内容,可能不完整 概述 对硬件描述,主要是对芯片设计进行验证人员对其进行验证...
MySQL函数 - 字符串函数... 文章目录1 字符串函数2 数值函数3 日期函数4 流程函数 函数是指一段可以直接被另一段程序调用的程...
Word2010(详细布局解释... 目录一、界面介绍二、选项卡1、文件选项卡(保存、打开、新建、打印、保存并发送、选项&#...
ProTradex是链上衍生品... 目前,链上衍生品市场的总市值已经超过100亿美元,链上衍生品市场的产品类...
spring boot 集成 ... 要将 PostGIS 集成到 Spring Boot 应用程序中,需要按照以下步骤进行操作:1. 将...
【DDIM精读】公式推导加代码... 【DDIM精读】公式推导加代码分析。1.前言:ddim总览2.均值(μ\...
系统开发-McCabe复杂度(... 系统开发(上)-软件设计(三十二)https...
每日学术速递3.22 CV - 计算机视觉 |  ML - 机器学习 |  RL - 强化学习 | NLP 自然语言处理 ...
CCF-CSP题解 第二题(J... 目录 201312-2:ISBN号码 201403-2:窗口 20140...
在服务器上搭建nacos集群-... 搭建集群需要具备JDK环境,1个Nginx+3个nacos注册中心+1...