数据库数据恢复—Sql Server数据库文件丢失的数据恢复案例

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 数据库数据恢复环境:5块硬盘组建一组RAID5阵列,划分LUN供windows系统服务器使用。windows系统服务器内运行了Sql Server数据库,存储空间在操作系统层面划分了三个逻辑分区。数据库故障:数据库文件丢失,主要涉及3个数据库,数千张表。数据库文件丢失原因未知,不能确定丢失的数据库文件的存放位置。数据库文件丢失后,服务器仍处于开机状态,所幸未写入大量数据。

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

数据库故障:
数据库文件丢失,主要涉及3个数据库,数千张表。数据库文件丢失原因未知,不能确定丢失的数据库文件的存放位置。数据库文件丢失后,服务器仍处于开机状态,所幸未写入大量数据。

数据库数据恢复过程:

1、镜像备份过程不在这里赘述,后续所有的数据分析和数据恢复操作都基于镜像文件进行。
2、基于镜像文件分析所有磁盘的底层数据,获取重组RAID所需信息。根据获取到的raid相关信息内部数据块信息重组RAID。
01副本.jpg

3、完成raid重组后,提取LUN的三个分区的镜像。扫描文件系统内丢失文件,但是没有找到丢失的数据库文件,从文件系统角度无法恢复丢失的数据库文件。
4、使用北亚企安自主开发的扫描程序扫描分区内数据页并进行提取。经过扫描发现一个分区中数据页数量极少且数据页断裂情况严重,另一分区内扫描到的数据页较多,初步判断此分区为丢失的数据库文件的存储空间。
扫描数据页:
02副本.jpg

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

7、分别提取三个库中各表的表结构信息。
04副本.jpg

8、解析表结构脚本,将各表的列信息存入数据库内便于后续使用。
扫描脚本文件:
05副本.jpg

表结构信息存入数据库:
06.jpg

9、解析系统表获取用户表id信息、关联表结构与数据页。
10、新建数据库,使用北亚企安自主开发的软件解析记录并导入到准备好的环境内。
11、在数据库文件所在的分区内除了数据库文件外还有若干备份文件,所以在导出记录后可能存在重复数据,需要去重。北亚企安数据恢复工程师编写小程序进行去重。
数据库去重:
07副本.jpg

12、数据处理完成后,由用户方工程师对恢复出来的数据进行检验,经过查验用户方表示数据可以接受,移交数据到用户方准备好的存储中。本次数据恢复工作完成。

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
17天前
|
SQL 数据库 数据安全/隐私保护
SQL Server数据库Owner导致事务复制log reader job无法启动的解决办法
【8月更文挑战第14天】解决SQL Server事务复制Log Reader作业因数据库所有者问题无法启动的方法:首先验证数据库所有者是否有效并具足够权限;若非,使用`ALTER AUTHORIZATION`更改为有效登录名。其次,确认Log Reader使用的登录名拥有读取事务日志所需的角色权限。还需检查复制配置是否准确无误,并验证Log Reader代理的连接信息及参数。重启SQL Server Agent服务或手动启动Log Reader作业亦可能解决问题。最后,审查SQL Server错误日志及Windows事件查看器以获取更多线索。
|
3天前
|
SQL 数据库 Python
数据库 SQL常用语句
这篇文章是数据库SQL的常用语句指南,涵盖了查询格式、WHERE子句查询条件、多表连接查询、嵌套查询、字符匹配查询以及其他指令如排序、聚集函数、GROUP BY分组、EXIST子查询和外连接等知识点。
|
7天前
|
SQL 数据库
Microsoft SQL Server 2014如何来备份数据库
Microsoft SQL Server 2014如何来备份数据库
10 3
|
7天前
|
SQL 关系型数据库 MySQL
【MySQL 慢查询秘籍】慢SQL无处遁形!实战指南:一步步教你揪出数据库性能杀手!
【8月更文挑战第24天】本文以教程形式深入探讨了MySQL慢SQL查询的分析与优化方法。首先介绍了如何配置MySQL以记录执行时间过长的SQL语句。接着,利用内置工具`mysqlslowlog`及第三方工具`pt-query-digest`对慢查询日志进行了详细分析。通过一个具体示例展示了可能导致性能瓶颈的查询,并提出了相应的优化策略,包括添加索引、缩小查询范围、使用`EXPLAIN`分析执行计划等。掌握这些技巧对于提升MySQL数据库性能具有重要意义。
34 1
|
11天前
|
Linux 数据库 数据安全/隐私保护
|
15天前
|
SQL 存储 关系型数据库
数据库SQL入门指南
数据库SQL入门指南
|
12天前
|
SQL 关系型数据库 MySQL
解决:Mybatis-plus向数据库插入数据的时候 报You have an error in your SQL syntax
该博客文章讨论了在使用Mybatis-Plus向数据库插入数据时遇到的一个常见问题:SQL语法错误。作者发现错误是由于数据库字段中使用了MySQL的关键字,导致SQL语句执行失败。解决方法是将这些关键字替换为其他字段名称,以避免语法错误。文章通过截图展示了具体的操作步骤。
|
13天前
|
SQL 关系型数据库 MySQL
SQL数据库和 SQLserver数据库
【8月更文挑战第19天】SQL数据库和 SQLserver数据库
26 2
|
13天前
|
SQL 存储 安全
SQL Server数据库创建
【8月更文挑战第19天】SQL Server数据库创建
23 1
|
15天前
|
SQL 关系型数据库 数据库
数据库空间之谜:彻底解决RDS for SQL Server的空间难题
【8月更文挑战第16天】在管理阿里云RDS for SQL Server时,合理排查与解决空间问题是确保数据库性能稳定的关键。常见问题包括数据文件增长、日志文件膨胀及索引碎片累积。利用SQL Server的动态管理视图(DMV)可有效监测文件使用情况、日志空间及索引碎片化程度。例如,使用`sp_spaceused`检查文件使用量,`sys.dm_db_log_space_usage`监控日志空间,`sys.dm_db_index_physical_stats`识别索引碎片。同时,合理的备份策略和文件组设置也有助于优化空间使用,确保数据库高效运行。
30 2
下一篇
云函数