我有一个数据库,它有两个文件组(都是 r/w),每个文件组有两个文件。备份顺序是:
- 完整备份
- 多个事务日志备份 (tlog set1)
- 文件组 1 的文件 1 的完整备份
- 多个事务日志备份(tlog set2)
- 文件组 1 的文件 2 的完整备份
- 多个事务日志备份(tlog set3)
- 文件组 2 的文件 1 的完整备份
- 多个事务日志备份(tlog set4)
- 文件组 2 的文件 2 的完整备份
- 多个事务日志备份(tlog set5)
- 尾日志备份
我在网上找到的指导是要恢复 file1,我需要恢复 file1 备份,然后前滚 tlog 集 1-5 和尾日志。
但是,假设我需要在最短时间内恢复整个数据库,我可以使用以下顺序吗:
Restore file1 filegroup1
restore tlog set2 --roll forward to file 2 backup
restore file2 filegroup1
restore tlog set3
restore file1 filegroup2
restore tlog set4
restore file2 filegroup2
restore tlog set5
restore tail
我必须做
Restore file1 filegroup1
Restore tlog set2 -- roll forward to current time
Restore tlog set3
Restore tlog set4
Restore tlog set5
Restore tail
Restore file2 filegroup1
Restore tlog set2 -- roll forward to current time
Restore tlog set3
Restore tlog set4
Restore tlog set5
Restore tail
...
在移动下一个文件之前将每个文件联机(或者甚至可能只使用完整备份然后应用所有日志备份)?无法找到明确的答案。
另外,我是否有必要恢复初始的完整备份,因为文件备份覆盖了整个数据库?
文档示例仅恢复一个文件组,即恢复完整文件备份,然后前滚通过每个日志使文件组保持最新。我想知道的情况是,如果您要还原多个文件备份,是否必须将每个文件前滚到现在,或者您是否可以还原第一个文件备份,将事务日志滚动到第二个文件备份,然后前滚到现在。我想尽量减少必须应用日志备份的次数。
你写的第一个序列是正确的:
您无需将第一个文件、第二个文件等联机,因为您只想在最短时间内恢复整个数据库。
我刚刚尝试了第一个序列,因为我认为它是正确的并且有效。
然后我尝试从完整备份+所有日志文件中恢复,看看它是否更快,确实如此。当然我的数据库足够小,只是一个测试数据库,但是你可以尝试将你的数据库恢复到另一个数据库或另一个服务器上,这两种方式都可以比较时间。
有几个在线示例(微软......以及社区的其他几个)如何实现(我认为)你正在尝试做的事情。
以下是我在官方文档中找到的最重要的示例:
如果这些链接对您的情况没有帮助,请回复。