【服务器数据恢复】VMware虚拟机下的SQL Server数据库数据恢复案例

news2024/11/15 8:39:57

服务器数据恢复环境:
一台某品牌PowerEdge系列服务器和一台PowerVault系列存储,上层是ESXI虚拟机文件,虚拟机中运行SQL Server数据库。

服务器故障:
机房非正常断电导致虚拟机无法启动。管理员检查虚拟机发现虚拟机配置文件丢失,所幸的是xxx-flat.vmdk磁盘文件和xxx-000001-delta.vmdk快照文件没有丢失。管理员尝试恢复虚拟机,将原虚拟机的xxx-flat.vmdk删除后新建了一个虚拟机,分配了几百GB的精简模式和几百GBGB的快照数据盘,但是并没有将原虚拟机内的数据恢复出来。

服务器数据恢复过程:
1、将挂载在VMware vSphere Client上的卷卸载后做镜像备份,后续的数据分析和数据恢复操作都基于镜像文件进行,避免对原始数据造成二次破坏。
2、经过对镜像文件进行检测&分析后发现:a、断电导致虚拟机目录项已经损坏;b、删除文件操作导致文件的数据区索引被清除;c、重建虚拟机操作导致分配给新建虚拟机的磁盘空间的数据底层被清零。前两种情况可以通过人工修复来恢复数据,但如果第三种情况是新建虚拟机的磁盘空间占用了原虚拟机的释放空间,这部分空间的数据则无法恢复,需要进一步检测才能确定是否出现这种情况。
虚拟机目录项:

 

3、数据恢复工程师分析底层数据,在自由空间内排查被删除的虚拟机磁盘区域,扫描这部分区域发现了大量的碎片并拼接&重组这些碎片,但是经过拼接&重组后发现有部分碎片文件缺失,只能暂时将缺失的文件碎片位置留空。
4、利用虚拟磁盘快照程序将重组好的父盘和快照盘合并,生成一个新的虚拟磁盘。
5、解释虚拟磁盘中的文件系统,因为数据缺失,文件系统解释过程中出现很多报错,提示某些文件损坏。
文件系统解释结果:

 

6、在解析完文件系统后发现没有找到原始的数据库文件。宏桥备份和索菲备份这两个目录的目录结构正常,但是在尝试将备份导入到数据库中时提示报错。
宏桥备份和索菲备份的部分目录结构:

 

导入.BAK文件报错信息:

 

7、根据SQL Server数据库的结构去自由空间中找到数据库的开始位置。SQL Server数据库的库名通常在库的第九页内,根据这一特性在底层扫描数据库页碎片,然后利用扫描出来的碎片重组mdf文件,在本案例中除了cl_system3.dbf和erp42_jck.dbf因有部分碎片
没有找到外(极有可能被覆盖了),其余数据库均校验成功。
校验完的MDF文件:

 

cl_system3.dbf文件中某个碎片丢失的区域:

 

8、详细检查备份文件依然没有找到这两个丢失的文件,只有部分增量备份文件。由于erp42_jck.dbf文件中只缺失少量的页,根据缺失的页号在增量备份中查找,再将找到的页补到erp42_jck.dbf文件中,通过这个办法可以恢复一部分丢失的数据库页。但是补完后发现还是缺失部分页,无法正常使用。
9、通过北亚企安自主开发的数据库解析程序将erp42_jck.dbf文件中重要的几十张表导出,并导入到新建的数据库中,恢复出缺失的文件。
10、重新搭建原始环境,将恢复出来的数据导入到新搭建的环境中,由用户亲自验证数据库的完整性,验证后确认所有数据完整、数据库挂载成功、上层应用运行正常,本次数据恢复工作完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/382958.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一、Java概述

一、Java概述 1.1 版本 Java SE 标准版(核心版本),主要包含Java最核心的库包括:集合,IO,数据库连接、网络编程等 Java EE 企业版,主要用于开发,装配,部署企业级应用包括…

工业机器人编程调试怎么学

很多人觉得工业机器人很难学学,实际上机器人涉及的知识远比PLC要少。现简单说明一下初学者学习工业机器人编程调试的流程,以AUBO机器人为例: 首先我们需要知道工业机器人的调试学起来不难,远比编程更简单,示教器上的编…

基于信息间隙决策理论的碳捕集电厂调度(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Golang Map原理(底层结构、查找/新增/删除、扩缩容)

参考: 解剖Go语言map底层实现Go语言核心手册-3.字典 一、Go Map底层结构: Go map的底层实现是一个哈希表(数组 链表),使用拉链法消除哈希冲突,因此实现map的过程实际上就是实现哈希表的过程。 先来看下…

react hooks学习记录

react hook学习记录1.什么是hooks2.State Hook3.Effect Hook4.Ref Hook1.什么是hooks (1). Hook是React 16.8.0版本增加的新特性/新语法 (2). 可以让你在函数组件中使用 state 以及其他的 React 特性 貌似现在更多的也是使用函数式组件的了,重要 2.State Hook imp…

Linux系统安装:Zookeeper

目录 Zookeeper的安装 1、环境准备 2、上传 3、解压文件到opt/zookeeper目下 4、安装完后进入zookeeper,找到conf目录 5、复制zoo_sample.cfg 6、编辑zoo.cfg 7、复制一份会话,进入zookeeper安装目录,创建一个文件夹zkdata&#xff0…

使用yeoman根据自己的模板创建一个脚手架

介绍 本文使用的模板并不是通用模板~,是自己构建的模板。内部具体如何选择模板逻辑就没有了,仅仅相当于入门demo实现流程。有兴趣学习脚手架的话yo还是不错的,走完本文逻辑可以试试看抽成自己项目,然后引用至公司~加油&#xff0…

【日常总结】Docker 磁盘占满解决方案

目录 项目背景: 问题描述 原因分析: 解决方案: Step 1:查看硬盘使用情况 Step 2:安装crontab Step 3:编写清理脚本cleardockerlog.sh,并执行一次 Step 4:加入定时任务,并设置…

什么是客户忠诚度?建立忠诚文化的 5 种方法

客户忠诚度影响企业的各个方面,例如收入、品牌形象、预算分配和产品路线图。拥有忠实的客户群对于建立成功的企业至关重要,因为您的客户是您的主要拥护者,有助于为您的企业营造积极的氛围。 什么是客户忠诚度? 客户忠诚度衡量客户…

深入浅出 MyBatis 的一级、二级缓存机制

一、MyBatis 缓存 缓存就是内存中的数据,常常来自对数据库查询结果的保存。使用缓存,我们可以避免频繁与数据库进行交互,从而提高响应速度。 MyBatis 也提供了对缓存的支持,分为一级缓存和二级缓存,来看下下面这张图…

java Object 万字详解 (通俗易懂)

基本介绍构造方法成员方法hashCode()getClass()toString()equals()finalize()JavaBean重写Object类的方法重写toString重写equals一、基本介绍Object类是java类层次最顶层的基类(父类),所有类都是直接或间接继承自Object类,因此&a…

进程概念(详细版)

进程的概念本文主要介绍进程的相关知识 文章目录认识冯诺依曼体系结构操作系统的基本概念操作系统的作用是什么系统调用和库函数相关概念进程基本概念描述进程进程控制块(PCB)task_struct 结构体进程是如何被操作系统管理起来的先描述再组织描述好,组织好&#xff0…

taobao.item.img.delete( 删除商品图片 )

¥开放平台免费API必须用户授权 删除商品图片 公共参数 请求地址: HTTP地址:http://gw.api.taobao.com/router/rest 公共请求参数: 公共响应参数: 请求参数 响应参数 点击获取key和secret 请求示例 TaobaoClient client new DefaultTaobaoClient(url…

学习ifconfig实战技巧,成为网络管理高手

文章目录前言一. ifconfig 命令介绍二. 语法格式及常用选项三. 参考案例3.1 显示网络设备信息3.2 启动和关闭指定的网卡3.3 对指定的网卡设备执行修改IP地址操作3.4 启动和关闭ARP协议3.5 使用ifconfig添加网卡总结前言 大家好,又见面了,我是沐风晓月&a…

Neovim for Rust

之前学习 Rust 一直使用的都是 VScode rust-analyzer,最近看到有网友安利 Neovim 于是就试了试,发现确实美观,好用,而且内存占用比较小。我个人很喜欢,也推荐给给大家。 前提:得有个代理,不然大…

一个自学自动驾驶(决策规划控制方向)的研究生学习资料总结(附相关资料的链接)

项目仓库 欢迎访问我的Github主页 项目名称说明chhCpp学习C仓库chhRobotics学习自动驾驶、控制理论相关仓库(python实现)chhRobotics_CPP学习自动驾驶、控制理论相关仓库(c实现)chhML 、chh-MachineLearning学习机器学习仓库chhRL学习强化学习仓库chhTricks存放一些有意思的t…

Unity烘焙常见问题

本文首发于公众号洪流学堂,未经允许,不可转载。 Unity中光影烘焙经常会遇到很多莫名其妙的问题,大智总结了一个问题解决手册,本文是比较常见的一些问题,还有一些不那么常见的问题,《手册全文pdf》获取方法&…

【2023蓝桥杯】2018年第九届C/C++A组真题(解析笔记)

目录 ♥【分数】循环累乘/快速幂运算/最大公因数 ♥【星期一】闰年/周期循环 ♥【乘积尾零】遍历/取余/取整 ♥【第几个幸运数】 遍历 ♥【打印图形】dfs填空 【航班时间】字符串/思维/时间换算 【三体攻击】差分!中等难度 ♥【全球变暖】dfs/连通块计数 *…

Python解题 - CSDN周赛第33期

本期四道题全考过&#xff0c;题解在网上也都搜得到。。。没有想法&#xff0c;顺手水一份题解吧。 第一题&#xff1a;奇偶排序 给定一个存放整数的数组&#xff0c;重新排列数组使得数组左边为奇数&#xff0c;右边为偶数。 输入描述&#xff1a;第一行输入整数n。(1<n<…

深究Java Hibernate框架下的Deserialization

写在前面 Hibernate是一个开源免费的、基于 ORM 技术的 Java 持久化框架。通俗地说&#xff0c;Hibernate 是一个用来连接和操作数据库的 Java 框架&#xff0c;它最大的优点是使用了 ORM 技术。 Hibernate 支持几乎所有主流的关系型数据库&#xff0c;只要在配置文件中设置好…