删库不用跑路:Sql Server 利用日志恢复被删除的表及数据

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
日志服务 SLS,月写入数据量 50GB 1个月
简介: 相信不少人都有删库或被删库的经历。当事情发生后,是跑路,还是自首?相信每个人都没有想过这两个选项,大家首先想到的是如何恢复数据。网络图,侵删今天我们将进行一个实验,试图在删库后悄悄的恢复数据,然后假装什么都没发生,继续混点。

相信不少人都有删库或被删库的经历。当事情发生后,是跑路,还是自首?相信每个人都没有想过这两个选项,大家首先想到的是如何恢复数据。

img_7e549d8442df58f05b3dd3a330f43b49.png
网络图,侵删

今天我们将进行一个实验,试图在删库后悄悄的恢复数据,然后假装什么都没发生,继续混点。

实验目的

通过Microsoft Sql Server 的数据库日志,恢复被删的表及数据。

此实验过程适用于以下场景:

  • 数据被删
  • 表被删
  • 错误的UPDATE
  • 错误的表结构更改

实验条件

  • Microsoft Sql Server 2008 R2
  • 数据库有很久以前的备份
  • 数据库最新的数据没有备份
  • 数据库还在,表没了
  • 数据库恢复模式是“完整”级别

实验过程

1、首先,我们创建一个数据库,创建一个表,弄点数据进去,并做一个备份。

特别强调,我们数据库的恢复模式应为“完整”,不要为了节省磁盘空间,而去收缩数据库日志,或把日志设为简单。

img_8ab9f9e03eac9fcd4fc17bd697130207.png
确保MSSQL的恢复模式起码是完整级别的
img_926e4abb5cf0ff4386272bc95313e22b.png
输入测试数据
img_721c6cfb93f2e00f4c544efb5358063c.png
备份

2、下面,我们假装业务在继续,又有新的数据产生了,这时候我们要记录一个时间点,即表或数据被删除前一刻的时间。

img_69ffd5d47860de1c9e740cd55b57c462.png
输入新的数据

记录时间点,稍微缓几分钟,然后删除数据,记住,这波数据是没有备份的。

img_e08ef386e4c3e00046246875e03b774e.png
删除

3、好了,假装有客户投诉发现数据异常,这时候我们发现数据不见了,库里面空如也,不要慌,先把日志备份一波。

img_3aa37db2c370ed74d801e207741c54d0.png
备份日志

4、把以前的旧备份,还原为一个新的库,切记,不要弄到旧库上去了,不然哭不死你。

img_2bde52b6a8e4417738411639e6fdd291.png
还原为一个新库

5、敲黑板,重点,还原的时候,在选项中选择图中红框标记的那项,这样我们才能在下一步中进行事务日志还原。

img_b7a43474c091f76b83393f27a6a51739.png
执行还原到最近的备份

6、这时候,新的数据库显示为(XXX正在还原),右键——任务——还原——事务日志

img_d9a1248b5fd598a6ce82c5fe01c2a336.png
显示还原中,右键

7、选择我们刚才用SQL备份的那个日志,设置时间点为我们刚才记下的时间。还原


img_5b467432c63479b986707bc287e10f6d.png
还原事务日志
img_b234ec2d03b09896536d04910eb4c122.png
还原时间点为:17:11:50

PS:由于实验途中被一波电话打断几小时,回来又重搞了一遍,有些图和内容有点不匹配,以后有空再改,见谅

img_df38c509af496b7eb719f7e3a18085a5.png
数据回来了
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
10天前
|
SQL 存储 缓存
MySQL进阶突击系列(02)一条更新SQL执行过程 | 讲透undoLog、redoLog、binLog日志三宝
本文详细介绍了MySQL中update SQL执行过程涉及的undoLog、redoLog和binLog三种日志的作用及其工作原理,包括它们如何确保数据的一致性和完整性,以及在事务提交过程中各自的角色。同时,文章还探讨了这些日志在故障恢复中的重要性,强调了合理配置相关参数对于提高系统稳定性的必要性。
|
25天前
|
SQL 安全 PHP
PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全
本文深入探讨了PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全。
44 4
|
1月前
|
SQL 存储 缓存
SQL Server 数据太多如何优化
11种优化方案供你参考,优化 SQL Server 数据库性能得从多个方面着手,包括硬件配置、数据库结构、查询优化、索引管理、分区分表、并行处理等。通过合理的索引、查询优化、数据分区等技术,可以在数据量增大时保持较好的性能。同时,定期进行数据库维护和清理,保证数据库高效运行。
|
2月前
|
SQL 移动开发 Oracle
SQL语句实现查询连续六天数据的方法与技巧
在数据库查询中,有时需要筛选出符合特定时间连续性条件的数据记录
|
2月前
|
SQL 数据库
为什么 SQL 日志文件很大,我应该如何处理?
为什么 SQL 日志文件很大,我应该如何处理?
|
2月前
|
SQL 存储 关系型数据库
添加数据到数据库的SQL语句详解与实践技巧
在数据库管理中,添加数据是一个基本操作,它涉及到向表中插入新的记录
|
2月前
|
SQL 数据挖掘 数据库
SQL查询每秒的数据:技巧、方法与性能优化
id="">SQL查询功能详解 SQL(Structured Query Language,结构化查询语言)是一种专门用于与数据库进行沟通和操作的语言
|
2月前
|
SQL 关系型数据库 Shell
SQL整库导出语录及其实用技巧与方法
在数据库管理和备份恢复过程中,整库导出是一项至关重要的任务
|
2月前
|
SQL 监控 数据处理
SQL数据库数据修改操作详解
数据库是现代信息系统的重要组成部分,其中SQL(StructuredQueryLanguage)是管理和处理数据库的重要工具之一。在日常的业务运营过程中,数据的准确性和及时性对企业来说至关重要,这就需要掌握如何在数据库中正确地进行数据修改操作。本文将详细介绍在SQL数据库中如何修改数据,帮助读者更好
364 4
|
2月前
|
SQL 存储 关系型数据库
SQL文件导入MySQL数据库的详细指南
数据库中的数据转移是一项常规任务,无论是在数据迁移过程中,还是在数据备份、还原场景中,导入导出SQL文件显得尤为重要。特别是在使用MySQL数据库时,如何将SQL文件导入数据库是一项基本技能。本文将详细介绍如何将SQL文件导入MySQL数据库,并提供一个清晰、完整的步骤指南。这篇文章的内容字数大约在
310 1