有没有办法减少在时间点恢复上花费的时间?

App*_*ity 5 sql-server backup recovery sql-server-2017

我很确定我知道这个问题的答案,但时间点恢复的局限性让我大吃一惊。

假设我有一个 2TB 的数据库设置为FULL恢复模式。我认真地每 30 分钟进行一次每周完整备份、每日差异备份和日志备份。

现在,我想将数据库回滚到 1 小时前。我真的必须在一小时前恢复整个完整备份、差异和日志吗?我是否正确地认为这将需要很长时间?

有没有办法ROLLBACK使用事务日志文件进行更改,以便这种类型的恢复需要几分钟?

AMt*_*two 9

是的,您必须还原完整备份、最多一个差异备份以及所有必要的日志备份,才能在 SQL Server 中执行时间点恢复。在 SQL Server 中,您无法回滚已提交的事务以及时返回。您可能希望使用该STOPAT语法将数据库恢复到所需的确切时间点

事实上,因为你每 30 分钟做一次事务日志备份,SQL Server 也会在每次日志备份时清除事务日志——所以回到一个小时之前,SQL Server 甚至没有必要的信息来滚动回溯那么远,即使 SQL Server 有这样的功能(遗憾的是它没有)。

我无法回答是否需要“很长时间”,因为根据数据库的大小、日志/差异备份中包含多少更改以及需要多少日志备份,还原时间会有所不同恢复了。对于不是很忙的小型数据库,恢复可能非常快,但对于非常繁忙的多 TB 数据库,可能需要一段时间。

Oracle 有一个称为Flashback的功能,可以让您按照您的描述进行操作,但 SQL Server 没有等效的功能。


Mat*_*DBA 6

您可以根据您的用例考虑使用SQL Server 快照功能。当我想重置数据库以匹配特定的测试启动条件时,我会在运行生产部署之前和在非 Prod 环境中使用该功能。由于它使用稀疏文件,只复制修改过的页面来维护快照,并允许您为特定时间点维护 1+ 个快照,因此它们非常有效,尤其是在跟踪 VLDB 设置中的微小更改时。需要警惕的一件事是被修改的页面数量,因为它们会相应地增加稀疏文件的大小,如果稀疏文件所在的空间用完,可能会发生中断。