• 【数据库数据恢复】Sql Server数据库数据恢复案例


    数据库数据恢复环境:
    5块2T硬盘组建RAID5;
    划分LUN供windows服务器使用;
    Sql Server2008数据库;
    存储空间有三个逻辑分区。

    数据库故障:
    数据库文件丢失,涉及到5个数据库,表约6000个,丢失原因未知,且不能确定数据存储位置。在文件丢失后服务器仍处于开机状态,但并未写入大量数据。

    初检流程:
    1、使用RAID信息及内部数据块信息重组RAID。

    重组RAID

    2、提取LUN内三个分区镜像。
    3、扫描文件系统内丢失文件,未找到被删除数据库文件。
    4、初检结果为数据库文件丢失,通过文件系统无法恢复。

    数据库恢复流程:
    1、制定恢复方案。在数据库文件被删除且判定为无法恢复文件后,只能通过扫描数据页,并提取页内记录的方式进行恢复。
    2、使用北亚自主编写的数据页扫描程序扫描分区内数据页并提取。在分别扫描两个分区镜像后发现500G系统盘内数据页数量极少且数据页断裂情况严重,另一分区内扫描到数据页个数较多。暂定此分区为数据库文件存储空间。

    扫描数据页
     

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

    还原备份
     

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

    提取表结构信息
     

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

    扫描脚本文件
     
    表结构信息存入数据库
     

    7、解析系统表获取用户表id信息、关联表结构与数据页。(为保护隐私,后续步骤涉及用户表表名及数据页内数据部分均未截图)
    8、新建数据库,使用北亚自主编写软件解析记录并导入到恢复环境内。
    9、整理恢复结果。在此分区内除数据库文件外还存有备份文件若干,所以在导出记录后可能存在重复数据,必须去重。数据恢复工程师编写SQL存储过程进行去重。

    数据库去重

    10、验证数据。管理员在查验过数据后表示没有问题,移交数据到管理员准备好的存储设备,恢复成功。



  • 相关阅读:
    【SVN解决代码提交冲突】https://www.cnblogs.com/aaronLinux/p/5521844.html
    查询有2门及以上不及格科目的学生姓名及其平均成绩
    【Python】split
    【Python】文件处理
    【robotframework】打开浏览器提示:NoSuchWindowException: Message: Unable to get browser
    定位到新窗口
    8月1号
    【定位】https://blog.csdn.net/cyjs1988/article/details/76284289
    【Robotframework】脚本跑完后自动发送邮件
    jQuery Mobile Data 属性
  • 原文地址:https://www.cnblogs.com/frombyte/p/16317266.html
Copyright © 2020-2023  润新知