我正在进行服务器迁移,并且正在寻找加快恢复速度的方法。
我有一个 1TB 的完整备份文件,需要大约 2 小时才能恢复
RESTORE DATABASE [MyDb] FROM DISK = N'C:\db\202010152000.bak' WITH FILE = 1, NORECOVERY, NOUNLOAD, REPLACE, STATS = 5
该文件需要一段时间才能创建并复制到新服务器,因此我还需要包含一个 DIFF,它可以获取最新数据并快速复制,
我会像这样在恢复中包含差异:
RESTORE DATABASE [MyDb] FROM DISK = N'C:\db\202010152000.bak' WITH FILE = 1, NORECOVERY, NOUNLOAD, REPLACE, STATS = 5
RESTORE DATABASE [MyDb] FROM DISK = N'C:\db\diff-final.bak' WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 5
但是,这需要大约相同的时间来恢复(稍长一些)
我想知道是否有一种方法可以先恢复完整备份,然后只应用差异并仅恢复差异位,而不是一次性恢复完整和差异。
这甚至可能吗?如果是这样,我可以大大减少停机时间。
数据库处于简单恢复模式,所以我坚持使用完整备份和差异备份。(Sql server 2017 耳鼻喉科)
编辑
所以根据第一个答案,我可以做到这一点
alter database [MYDB] set single_user with rollback immediate
go
USE [master]
RESTORE DATABASE [MYDB] FROM DISK = N'C:\db\Full.bak' WITH FILE = 1, NORECOVERY, NOUNLOAD, REPLACE, STATS = 5
GO
这大约需要 2 个小时,然后我可以做最后的 diff,然后运行这个:
USE [master]
RESTORE DATABASE [MYDB] FROM DISK = N'C:\db\diff2final.bak' WITH FILE = 1, RECOVERY, NOUNLOAD, STATS = 5
GO
alter database [MYDB] set MULTI_USER
GO
对的,这是可能的。
您应该首先选择恢复完整备份
WITH NORECOVERY
,然后,您只能恢复 DIFF 备份。只需尝试没有完整备份;
查看文档。