【数据库数据恢复】raid5下Sql Server数据库数据恢复案例

yumo6668个月前 (03-27)技术文章162

数据库数据恢复环境:

5块磁盘组建RAID5,划分LUN供windows服务器使用;

windows服务器上部署Sql Server数据库;操作系统层面划分了三个逻辑分区。

数据库故障&初检:

未知原因导致Sql Server数据库文件丢失,涉及到数个数据库和数千张表,不能确定数据存储位置。数据库文件丢失后服务器仍然在开机运行,所幸没有大量写入数据。

1、将故障服务器内所有硬盘以只读方式进行全盘镜像备份,后续数据分析和数据恢复操作都基于镜像文件进行,避免在恢复数据的过程中对原始数据造成二次破坏。

2、基于镜像文件分析raid5底层数据,通过分析获取到的raid相关信息及内部数据块信息重组RAID。

重组RAID:



3、完成RAID重组后提取LUN内的三个逻辑分区的镜像。

4、扫描文件系统内丢失文件,未找到被删除的数据库文件。

5、初检结果为数据库文件丢失,在文件系统层面无法恢复数据库数据。

数据库数据恢复流程:

1、经过初检后发现数据库文件被删除且无法在文件系统层面进行恢复后,北亚企安数据恢复工程师决定通过扫描数据页,提取页内记录的方式来恢复丢失的数据库数据。

2、使用北亚企安自主开发的数据页扫描程序扫描分区内数据页并进行提取。扫描两个分区镜像后发现系统盘分区镜像内的数据页数量极少且数据页断裂情况严重,另一分区内扫描到的数据页数量较多,暂定此分区为数据库文件的存储空间。

扫描数据页:



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

4、还原备份:



5、分别提取需要恢复数据的三个库中各表的表结构信息。

提取表结构信息:



6、解析表结构脚本,将各表的列信息存入数据库内便于在后续的数据恢复过程中使用。

扫描脚本文件:



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



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

8、新建数据库环境,使用北亚企安自主编写的软件解析记录并导入到环境内。

9、整理恢复结果。数据库文件存储的分区内除了存放数据库文件外还存放若干备份文件,所以在导出记录后可能存在重复数据,需要去重。由北亚企安数据恢复工程师编写程序进行去重。

数据库去重:



10、处理完所有数据后交由用户方验证数据。用户方工程师经过反复查验后确认恢复数据完整有效。将恢复出来的数据迁移到用户方准备好的存储设备中。

相关文章

如果数据库误操作, 如何执行数据恢复?

如果数据库出现误操作,导致数据被删除或修改,可以通过以下步骤进行数据恢复:停止MySQL服务:在误操作发生后,立即停止MySQL服务,防止数据被覆盖。找到备份数据:如果有备份,可以通过备份文件进行数据...

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

服务器数据恢复环境:一台安装windows server操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。在windows服务器内装有SqlServer数据库。存储空间LU...

系统架构师:数据库的故障与恢复

一.故障类型数据库的故障可用事务的故障来表示,主要分为四类:事务故障。事务在运行过程中由于种种原因,如输入数据的错误、运算溢出、违反了某些完整性限制、某些应用程序的错误,以及并发事务发生死锁等,使事务...

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

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

电脑硬盘数据库恢复的方法

在现代社会,电脑已经成为人们生活中不可或缺的一部分。然而,由于各种原因,我们的电脑硬盘中的数据库可能会丢失或损坏,这对我们的工作和生活都会带来很大的影响。那么,数据库丢失文件怎么恢复?下面,我们将为大...