如何使用 Windows Server Backup 备份 SQL Server 数据库?

Hei*_*nzi 11 windows backup sql-server

显然,Windows Server Backup对 SQL Server 数据库的备份有一些支持:

能够恢复应用程序。Windows Server Backup 使用内置于 Microsoft® SQL Server® 等应用程序中的 VSS 功能来保护应用程序数据。[来源:TechNet ]

此外,人们报告说 Windows Server Backup 似乎会触发 SQL Server 中的某种备份操作

但是,我找不到有关如何使用 Windows Server Backup 备份 SQL Server 数据库的(官方)文档。

  • 我只需要备份.mdf吗?在.mdf.ldf
  • 线上还是线下?
  • 恢复以这种方式备份的 SQL Server 数据库的官方程序是什么?
  • 进行增量/差异备份时有什么特别需要考虑的吗?
  • 所有这些记录在哪里?

(我知道如何使用 SQL Server 维护计划、sqlmaint.exeT-SQL BACKUP 和 SQL Server 代理进行备份。我只对 Windows Server Backup(显然?)提供的替代方案感兴趣。)

Joh*_* N. 7

Windows Server Backup 不打算用作 SQL Server 的备份工具。

...然而,该设计使其特别适合IT 专业人员的小型组织或个人...

引自适用于 Windows Server 2008 的 Windows Server Backup 分步指南部分:“谁应该使用 Windows Server Backup?”

您引用的部分基本上是说,当 Windows Server Backup 启动时,它将触发 Windows 中的 VSS 功能。SQL Server 会意识到卷影复制正在发生,并且在 SQL Server Writer 服务的帮助下,将确保可以执行数据库文件(*.mdf、*.ndf、*.ldf)的副本。

SQL Server Writer 服务的用途定义如下:

运行时,数据库引擎锁定并具有对数据文件的独占访问权限。当 SQL Writer Service 未运行时,在 Windows 中运行的备份程序无法访问数据文件,必须使用 SQL Server 备份执行备份。

使用 SQL 编写器服务允许 Windows 备份程序在 SQL Server 运行时复制 SQL Server 数据文件。

引自SQL Writer Service部分:“目的”

所以这基本上就是 Windows Server Backup 发生的所有事情。

在 SQL Server 运行时使用 Windows Server Backup 创建的备份应该是一致的,但尚未写入磁盘的事务不在卷影副本中。数据库快照是在 ONLINE 时拍摄的。

但是 MSDN 文章快照备份指出:

只有以下类型的备份可以是快照备份:

  • 完整备份
  • 部分备份
  • 文件备份
  • 差异数据库备份。仅当供应商使用 VSS 接口时才支持这些。

此外:

除非本主题前面提到过,否则快照备份在功能上等同于相应的常规备份。您可以在非快照完整备份、差异备份和日志备份的还原序列中使用快照备份。与其他备份一样,快照备份在 msdb 数据库中进行跟踪,其中快照备份由 backupset.is_snapshot = 1 标识。有关 msdb 的详细信息,请参阅 msdb 数据库。

SQL Server 不支持从快照备份进行联机还原。恢复快照备份会自动使数据库脱机。零碎恢复可以包含快照备份,但所有恢复序列都是离线恢复。有关分段还原的更多信息,请参阅执行分段还原。

回答您的问题:

  • 我只需要备份 .mdf 吗?.mdf 和 .ldf?
  • 线上还是线下?
  • 恢复以这种方式备份的 SQL Server 数据库的官方程序是什么?
  • 进行增量/差异备份时有什么特别需要考虑的吗?
  • 所有这些记录在哪里?

答案:

  1. 是的,您可以制作 .mdf 和 .ldf 文件的 Windows Server Backup (VSS) 副本。备份应该是一致的,但数据库将在还原后脱机。
  2. 如果 SQL Server 已停止/数据库已分离/数据库处于脱机状态,则 .mdf 和 .ldf 文件的 VSS 副本是 100% 一致的。
  3. 我不确定如何恢复使用 Windows Server Backup 进行的数据库(到时间点),因为数据库是在离线状态下恢复的。处于 OFFLINE 状态的数据库无法进一步恢复/恢复,使数据库 ONLINE 会导致数据库被视为完全恢复。我建议使用单独的 SQL Server FULL、DIFF 和 TLOG 备份,以确保您可以将数据库还原到某个时间点。
  4. 事务日志不是使用 Window Server Backup 创建的快照的一部分,应该另外执行。作为备份序列的一部分,第 3 方供应商支持差异快照,但 Windows Server Backup 似乎无法执行差异备份。在这种情况下,您还必须执行额外的差异备份。(见 3。)
  5. 不同的参考

在现实生活中解释

在我们的环境中,我们遇到了类似的情况,VMware 正在执行快照,而 DBA 正在使用 Commvault 执行 SQL Server 转储。备份历史看起来像这样:

DBNAME  TYPE BACKUPSET_NAME            IS_SNAPSHOT BACKUP_START_DATE        
------- ---- ------------------------- ----------- -----------------------  
DB_NAME  Full  NULL                    1           2016-12-10 18:23:59.000  
DB_NAME  Full  CommVault Galaxy Backup 0           2016-12-10 20:07:41.000  
DB_NAME  Log   CommVault Galaxy Backup 0           2016-12-11 06:00:40.000  
DB_NAME  Full  NULL                    1           2016-12-11 18:24:00.000  
DB_NAME  Diff  CommVault Galaxy Backup 0           2016-12-11 20:03:38.000  
DB_NAME  Log   CommVault Galaxy Backup 0           2016-12-12 06:02:29.000  
DB_NAME  Log   CommVault Galaxy Backup 0           2016-12-12 07:02:17.000  
Run Code Online (Sandbox Code Playgroud)

VMware 快照将在 MSDB 数据库历史记录表中创建一个条目,IS_SNAPSHOT = 1FULL为每个执行(每天)的 VMware 快照创建一个条目。本机(使用本机的 Commvault)SQL Server 备份是使用 FULL、DIFF 和 TLOG 备份进行的。这些备份未标记为 IS_SNAPSHOT 并且在 msdb 数据库的备份表中作为附加的 FULL(每周一次)、DIFF(每隔一天)和 LOG(每小时)条目存在。

通过此设置,我们可以对快照日期时间执行还原,然后使数据库联机,也可以使用“本机”SQL Server 备份对任何时间点执行单独还原。


小智 1

你不能。或者至少你可能不应该这样做。就 SQL Server 数据库而言,支持的方法是本机备份。

我认为您可能误解了 TechNet 文章的内容。您引用的注释并不表明您可以对 SQL Server 数据库使用 Windows Server 备份。它实际上只是强调 Windows Server 备份使用与 SQL Server 相同的卷影复制服务。详细信息:TechNet:SQL 编写器服务