我有一个运行维护计划的 SQL 2005 SP 2 服务器,每天 22:00 执行完整备份,每 4 小时执行一次差异备份,每 30 分钟执行一次日志备份。该计划备份所有系统和用户数据库(所有用户数据库都处于完全恢复模式)。完整和日志备份全部完成并验证没有问题 - 我已经通过一些测试恢复确认了这一点。每天早上,差异备份都会从 2 个数据库中抛出一个错误,指出不存在完整备份。
总是有相同的两个数据库出现此错误 - 所有其他数据库都正常。如果我再次手动运行完整备份,则差异将运行良好,直到第二天早上。
我相当确定问题出在使用 Bacula 管理服务器的公司在午夜运行的 VSS 备份。在 SQL 日志中,我可以看到 VSS 仅在 Bacula 运行时才冻结/解冻系统 DB 和这两个数据库。
显然,我可以让托管公司停止在他们的工作中备份数据库,因为他们无论如何都在获取我的 SQL 备份文件,但我只是想知道为什么会这样。这两个数据库可能有什么不同,因为我检查过的每个选项都与完全正常的选项相同。我在另一台运行没有问题的服务器上设置了相同的计划。
谢谢,克里斯。
我认为您应该查看在 22:00 执行完整备份的作业的作业历史记录。可能会出现警告,并且可能会跳过某些数据库备份,无论是该数据库还是没有完整备份的 2 个数据库都没有安排完整备份。还要检查完整备份作业的持续时间,如果 Co 的 Bacula 备份在完整备份完成之前开始,则确实可能存在问题(尽管数据库的完整备份需要 2 小时有点极端)。无论如何,该消息是明确的,并且由于某种原因,这两个数据库上不会发生完整备份。
您的所有数据库都在完全恢复模式下运行吗?VSS 备份的行为可能会有所不同,具体取决于您是完全恢复还是简单恢复。
如果 VSS 备份发生在您进行差异备份之后并且在您运行完整备份之前,那么这就是您的问题。您需要最后一次完整备份才能使您的差异能够工作。
在我看来,您的选择是:
关于为什么这仅发生在这两个数据库上(并且仅在此服务器上),我还没有得出明确的答案,但我已经决定重新调整所有内容的备份时间,以便我们的完整备份(SQL)在之后立即发生Bacula 备份运行,因此我们可以重置任何设置不正确的标志。它已经以这种方式运行了几天,没有任何问题。