服务器数据恢复—Sql Server数据库数据恢复案例

yumo6664个月前 (03-27)技术文章29

服务器数据恢复环境:

一台安装windows server操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。

在windows服务器内装有SqlServer数据库。存储空间LUN划分了两个逻辑分区。

服务器故障&初检:

由于未知原因,Sql Server数据库文件丢失,丢失数据涉及到3个库,表的数量有3000左右。数据库文件丢失原因还没有查清楚,也不能确定数据存储位置。

数据库文件丢失后服务器仍处于开机状态,所幸没有大量数据写入。

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

1、基于镜像文件分析所有硬盘的底层数据,获取该组RAID5相关信息及内部数据块信息,利用这些获取到的信息虚拟重组RAID。

重组RAID:



2、完成raid5阵列重组后,提取LUN内两个分区的镜像。

3、扫描文件系统内丢失的文件,但是没有找到丢失的数据库文件,在文件系统层面无法恢复数据。

服务器数据恢复过程:

1、通过初检确定无法从文件系统层面恢复数据后,北亚企安数据恢复工程师只能采取通过扫描数据页并提取页内记录的方案恢复数据库数据。

2、使用北亚企安自主开发的数据页扫描程序扫描&提取分区内的数据页。在扫描两个分区的镜像后发现一个分区(系统分区)内数据页数量极少且数据页断裂情况严重;另一分区内扫描到数据页个数较多了,应该就是数据库文件的存储空间。

扫描数据页:



3、Sql Server数据库使用系统表来管理所有用户表,这些系统表记录了各表的列数、数据类型及约束信息等。解析系统表过程中发现提取出的数据页内的系统表损坏,无法正常读取信息。在与用户方沟通后才得知有备份文件,且备份后没有对表结构进行大的改动,系统表可用。

4、还原备份。



5、分别提取三个丢失的数据库中各表的表结构信息。

提取表结构信息:



6、解析表结构脚本。将各表的列信息存入数据库内。

扫描脚本文件:



将表结构信息存入数据库:



7、解析系统表获取用户表id信息、关联表结构与数据页。

8、新建数据库,使用北亚企安自主开发的程序解析记录并导入到新建的数据库环境内。

9、整理恢复结果。在数据库文件所在的分区内除了数据库文件,还存放有备份文件,所以在导出的记录中应该存在重复的数据,必须将数据去重。北亚企安数据恢复工程师编写SQL存储过程对数据进行去重。

数据库去重:



10、处理完数据后交由用户方验证数据。用户方对数据进行检查后确认恢复出来的数据有效。在数据恢复工程师的协助下,用户方将恢复出来的数据迁移到准备好的存储设备中。本次数据恢复工作完成。

相关文章

数据库数据恢复—Sql Server数据库文件丢失如何恢复数据?

数据库数据恢复环境:5块硬盘组建一组RAID5阵列,划分LUN供windows系统服务器使用。windows系统服务器内运行了Sql Server数据库,存储空间在操作系统层面划分了三个逻辑分区。数据...

服务器数据恢复—云服务器上mysql数据库表被truncate的数据恢复

云服务器特点:1、无需硬件设备,只需按照配置支付相应的费用,云服务器服务商不仅提供云服务器环境,同时还提供技术咨询服务。2、云服务器可以更充分的利用资源,无需考虑老旧设备的淘汰和折旧,节约购买新设备的...

mariadb数据库备份与恢复-数据一条都不能少

数据库备份与恢复是数据安全的最后一道防线。其必要性不仅在于防御风险,更是持续服务和数据资产保值的核心保障。数据面临的威胁:硬件故障:硬盘损坏、服务器宕机等物理问题可能导致数据无法访问。软件缺陷:数据库...

SQLSERVER 恢复命令restore总结

一、概述SQLSERVER的备份与恢复命令:BACKUP和RESTORE是一对孪生兄弟,在前一篇文章中我们介绍了BACKUP命令及其选项的使用,就像 BACKUP 命令一样,RESTORE 命令也有很...

数据库数据恢复—MongoDB数据库_mdb_catalog.wt丢失的数据恢复

MongoDB数据库数据恢复环境:一台Windows Server操作系统的虚拟机,虚拟机上部署有MongoDB数据库。MongoDB数据库故障&检测:在未关闭MongoDB服务的情况下,工作人员将M...

数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例

SQL Server数据库故障:SQL Server附加数据库出现错误823,附加数据库失败。数据库没有备份,无法通过备份恢复数据库。SQL Server数据库出现823错误的可能原因有:数据库物理页...