【问题标题】:Why is my SQL Server Differential backup failing sometimes?为什么我的 SQL Server 差异备份有时会失败?
【发布时间】:2020-02-12 05:14:17
【问题描述】:

我遇到的问题只有在我的 SQL Server 差异备份作业失败并显示类似于

的错误消息时才会发生
Msg 3035, Sev 16, State 1, Line 1 : Cannot perform a differential backup for database "MyDatabaseName", because a current database backup does not exist. Perform a full database backup by reissuing BACKUP DATABASE, omitting the WITH DIFFERENTIAL option. [SQLSTATE 42000]
Msg 3013, Sev 16, State 1, Line 1 : BACKUP DATABASE is terminating abnormally. [SQLSTATE 42000]

我目前正在使用 Ola Hallengren 的 SQL Server Mantenance Solution script 进行备份、完整性检查和索引维护。我已经这样安排了备份作业:

  • 每天凌晨 1:30 对系统数据库进行完整备份
  • 每周一、周三和周五凌晨 2:30 对所有用户数据库进行完整备份
  • 每周日、周二、周四和周六凌晨 2:30 对所有用户数据库进行差异备份
  • 每 30 分钟备份一次事务日志或所有用户数据库

我还将清理时间设置为 168 小时……也就是 7 天。

我知道,当出现此错误消息时,通常是由于不存在完整备份,或者数据库的恢复模式可能正在更改。我已经检查了这两个,但似乎都不是。我可以确认我的周五完整备份是成功的,但是我的周六和周日差异备份失败了。恢复模式也没有变化,也没有通过 SQL Server 进行手动备份。

值得注意的是,这种情况有时会发生。有时差异备份可以正常工作,而有时它们会失败。

此服务器是一个虚拟机,我们使用的是 VMWare vSphere/vCenter 6.5。我已经与我的服务器管理员交谈并询问他的备份运行情况如何,他告诉我我们正在使用利用 VMWare 快照技术的 Quest AppAssure,并且他每 x 分钟备份一次驱动器,因此有可能他备份的时间发生了变化,最终与我的重叠。

我们回顾了他的备份在周末运行的时间,它们发生在我的备份开始前几分钟。我想知道这是否会导致我的备份问题?如果是这样,有没有办法防止这种情况发生,还是我们只需要在不重叠的不同时间计划备份?

谢谢

【问题讨论】:

  • 为什么这 4 天只有一个差异?我从未见过这种类型的时间表。通常每个 FULL 之间有超过 1 个差异,并且在某些日子不会。如果您从两种不同的方法进行备份,那么您也将拥有两个不同的备份集。这是有问题的,因为除非您正在执行COPY ONLY,否则您会破坏备份链。那么,如果我们退后一步,我们可以问一下您的 RPO / RTO 是什么?也许您的备份策略可以调整。似乎几乎可以肯定。
  • 您在进行备份时是否在 SQL Server 日志中看到 I/O 冻结消息?当然,这种古怪的配置(每隔一天和每天都有多个备份源)在某处破坏了备份链。
  • 用户数据库的大小是多少?我以前从未见过这种类型的计划,也看不到这么多差异备份的好处?
  • 我会尽力回答问题并提供一些背景信息。至于 RPO/RTO,我已经问过多次并且知道可以给出一个明确的答案,所以我尝试放置一些可以为我们提供合理备份恢复的东西,这就是为什么我每 30 分钟设置一次日志备份.就差异备份而言,我认为这将有助于一些空间,但如果最好不要在完整备份和差异备份之间交替,那么我完全愿意就更好的计划提出建议。
  • 至于第二个备份源,我最初的印象是 AppAssure 备份正在执行整个驱动器备份并且不应该影响我的备份。我从我们的服务器管理员那里看到了备份的不可靠性,这就是为什么我更喜欢自己做备份。我刚刚查询了 msdb.backupset 表,发现 appassure 肯定也在做备份,我想这会影响我的备份集。这是正确的吗?

标签: sql-server backup vmware database-backups


【解决方案1】:

我们今天与 Quest 打了另一个电话,并找到了解决问题的办法。

似乎在通过 Quest Rapid Recovery 配置备份时,您可以选择执行机器级备份或卷级备份。当它被配置为执行卷级备份时,您可以选择让它执行不支持 SQL Server 的块级备份,或者让它执行支持 SQL Server 的备份,最终使用卷影复制服务并且这些备份在 SQL 备份历史记录中显示为完整(仅复制)备份...即使您无法从 SQL Server 恢复它们。

Rapid Recovery 只能按计划进行备份,并且可以选择在备份完成后截断日志以避免填充日志文件,但不能进行事务日志备份,因此您无法进行更细粒度的备份恢复到秒,就像使用原生 SQL 时间线恢复...这就是我们选择使用原生 SQL Server 备份的原因。

因此,要解决此问题,您需要进行没有 SQL Server 感知/集成的机器级备份。或者您可以进行卷级备份,但禁用 SQL Server Writer 扩展和截断日志选项以移除集成。

我们已经运行了一系列测试,从完成此更改的时间点/时间开始,我们在 SQL Server 备份历史记录中只看到 SQL Server 备份,而不再看到 Rapid Recovery 备份。

所以现在我正在与我的服务器/备份管理员讨论我们是否可以每天进行一次机器级备份,以便我们可以在发生灾难时进行机器级恢复,并添加一个卷级备份我的备份驱动器,以便他在白天更频繁地捕获我的备份。我认为一旦完成,我们将拥有两种备份解决方案中最好的。

  • 能够进行机器级恢复(快速恢复)
  • SQL Server 备份的保留(快速恢复)
  • 灵活的时间点恢复 (SQL Server)

【讨论】:

    【解决方案2】:

    只是想发布此问题的更新

    我们昨天安排了与 Quest 的电话会议,他们向我保证,他们的备份只拍摄卷快照,不会影响我的 SQL 备份。他们说我看到这些错误的原因可能是 Rapid Recovery(我猜 AppAssure 已重命名为 Rapid Recovery)和我的 SQL 备份作业都试图同时使用卷影复制服务,所以我们只需要错开备份作业。我最终发现这并不完全正确,因为 Rapid Recovery 备份被配置为截断我的 SQL 日志。我还告诉快速恢复的人,当我查询 msdb 备份集表时,我看到列出的备份作业与快速恢复备份的时间一致。他仍然向我保证,这对我的备份影响为零。

    我仍然担心 Rapid Recovery 备份可能会影响我的备份文件链,因此在我们的测试环境中,我右键单击我们的一个数据库并单击任务 > 恢复 > 数据库以查看恢复历史记录。我看到一个数据库备份列为完整类型(仅复制),它与快速恢复备份一致,然后是我的一些事务日志备份。

    在我看来,Rapid Recovery 肯定会影响我的 SQL 备份。

    需要注意的另一件事是,我刚刚在测试环境中进行了尝试。我使用 Full's 、Transaction Log、Differentials 和 Full (Copy Only) 做了一些测试备份,只是为了看看在 SQL Server Management Studio 的恢复窗口中是如何显示的。

    所以我意识到,在默认的还原屏幕中,它会尝试使用各种备份文件的最少组合来恢复到最近的时间点。要跳过最后一次完整备份,我必须使用时间轴选项。

    • 我可以将完整备份视为第一项,然后是事务日志备份。
    • 执行差异备份后,我会看到完整备份和差异备份,但没有更多事务日志备份....这是有道理的,因为它试图获得最接近的恢复时间。
    • 接下来,如果我进行另一个事务日志备份,我会看到完整、差异和事务日志返回

    然而,令我惊讶的一件事是,如果我执行完整(仅复制)然后执行事务日志备份,我会在文件列表中看到这两项以进行恢复,但是如果我在完整之后执行差异(仅复制)它向我显示最后一个完整(仅非复制),加上差异。我预计备份将始终基于最后一次完整备份,无论是事务日志备份还是差异备份。我以为备份链中会忽略 Copy Only 备份。

    接下来,我决定使用时间线恢复功能,并在测试期间选择一个 Rapid Recovery 备份不属于所列备份的时间点,然后进行验证备份。正如预期的那样,它是成功的。在此之后,我尝试恢复到另一个时间点,其中列出了快速恢复完整(仅复制)备份,并且在快速恢复的完整(仅复制)备份文件上验证失败,因为它在 sql 服务器上不存在.

    关于如何解决此问题的任何建议? Rapid Recovery 备份的目的应该是备份机器,以防万一我们丢失服务器并且必须恢复整个服务器,再加上它可以获取我的 sql server 备份以保留,因为我只保留在服务器本身上进行 7 天的备份。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多