Chinaunix首页 | 论坛 | 博客
  • 博客访问: 220621
  • 博文数量: 466
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4695
  • 用 户 组: 普通用户
  • 注册时间: 2016-08-02 14:16
文章分类

全部博文(466)

文章存档

2024年(31)

2023年(218)

2022年(181)

2020年(12)

2019年(24)

我的朋友

分类: SQLServer

2023-04-28 14:49:27

数据库数据恢复环境:
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、处理完所有数据后交由用户方验证数据。用户方工程师经过反复查验后确认恢复数据完整有效。将恢复出来的数据迁移到用户方准备好的存储设备中。
阅读(218) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~