我需要备份 10-20 个大小在 10-50 GB 之间的 SQL Server 2008 R2 数据库,同时它们在线并由单个企业应用程序同时使用。我还需要将它们恢复到在所有数据库之间基本同步的状态(我可以承受数据库之间最多几秒钟的不同步)。目的是为 QA/DEV 环境捕获生产数据。
我强烈希望不要求数据库在完全恢复中运行,并提出一种备份方法,该方法专门用于为 QA 环境捕获数据,并且独立于不受我控制的主备份过程。
对于我的客户,捕获 20 个完整备份(每个大约 30 GB)需要 1-2 个小时。这使得按顺序进行完整备份是不可接受的,因为在简单恢复中运行时数据库会过于不同步。
我正在寻找比这些更好的想法:
想法 1:虚拟机磁盘的 SAN 级快照。从快照中 xcopy MDF/LDF。
一旦复制的文件附加到不同的服务器实例,它的恢复过程应该会生成几乎同时快照的一致数据库。
谷歌搜索让我确信这是一个坏主意,至少因为我可能会与 master/msdb/etc 不同步。
IDEA 2:跨所有数据库编排复杂的备份和同步恢复
这要求我要求数据库在完全恢复中运行,这是我不想要的。在截止日期 (T0) 之前为所有数据库启动并行备份。达到 T0 后,备份所有日志(最多需要几分钟)。获取生成的无数备份并尝试恢复它们并向前/向后滚动日志以获得相对于 T0 跨数据库的某种一致状态。
这需要大量的计划和脚本才能可靠地使用它,所以我会竭尽全力避免它。
我是否缺少其他解决方案?
PS1:我希望能够使用db snapshots。这个想法是在每个数据库上启动一个快照(应该在几秒钟内完成),然后在接下来的几分钟/小时内按顺序完全备份每个数据库。然后将它们全部还原到不同的服务器上,并将每个还原为快照。AFAIK 这种情况是不可能的,因为快照不能与数据库一起备份。它们只能在创建它们的服务器上原地回滚。此外,他们需要企业版,我没有为所有客户提供。
PS2:如果您知道能够生成跨数据库同步备份的第 3 方解决方案,请提及。