我已设置 DPM 每 30 分钟备份一次我的 TFS 服务器,原因是它的界面比古怪的 SQL 备份界面好得多。
我还每晚使用 SQL 维护作业进行完整备份。
我的想法是,如果丢失数据库,我将使用 DPM 来恢复数据库,而每晚的完整备份将以防万一 DPM 恢复不起作用。
今天我对这个设置进行了更深入的思考,并开始想到各个数据库的 DPM 备份发生在不同的 30 分钟窗口期...例如,一个发生在 13h30,另一个发生在 13h34 等等。
在恢复 TFS 服务器时,这种时间差异会成为问题吗?如果我恢复数据库并且它们来自不同的时间,这是否会导致一个数据库中的指针指向另一个数据库中的缺失项,从而造成损坏?数据库是否相互依赖,还是完全相互依赖。
最后,SQL(日志)备份如何应对这个问题?
答案1
据我所知,你的担心是有根据的。
这TFS 备份指南doco 不断地强调确保 TFS_ 数据库作为原子单元进行备份和恢复的必要性:
要成功备份 Team Foundation Server,您不仅必须备份部署使用的所有数据库,还必须将备份同步到同一时间点。如果使用标记事务,则可以最有效地管理此同步。
[...] 如果仅备份和恢复一个数据库,其数据将与其他数据库中的数据不同步
据我所知,即使同时对所有数据库进行 DPM 备份也无法实现这一点。它将在每个数据库的基础上实现一致性(通过 VSS),但无法跨数据库实现一致性,即无法在事务级别实现一致性。我认为数据库备份是按顺序处理的。
最佳策略似乎是按照备份指南(上文)中的步骤设置常规 SQL 备份策略包括交易日志标记并确保这些备份文件由 DPM 备份。如果发生故障,使用 DPM 将数据库恢复到“恢复”模式,然后完成恢复到所有数据库中的最后一个一致事务标记(使用 SQL 管理工具)。但肯定能够使用 DPM 跳过大部分重新设置 TFS/SharePoint 带来的痛苦在 DR 场景中将节省大量时间。
以这种方式设置备份集(包括事务标记)可以使用TFS PowerTools Team Foundation 备份插件。理论上,这也可以用于恢复,但是有一些在 DR 场景中查找事务标记的问题。