显然 Windows Server Backup 有一些支持SQL Server数据库备份:
恢复应用程序的能力。Windows Server Backup 使用内置于 Microsoft® SQL Server® 等应用程序中的 VSS 功能来保护应用程序数据。[来源:科技网]
此外,有人报告说 Windows Server Backup 似乎在 SQL Server 中触发某种备份操作。
然而,我找不到关于具体如何使用 Windows Server Backup 备份 SQL Server 数据库。
- 我是否只需要备份
.mdf
?.mdf
和.ldf
? - 是线上还是线下?
- 恢复以这种方式备份的 SQL Server 数据库的官方程序是什么?
- 进行增量/差异备份时有什么特别需要考虑吗?
- 所有这些记录在哪里?
(我知道如何使用 SQL Server 维护计划、sqlmaint.exe
T-SQL BACKUP 和 SQL Server Agent 进行备份。我只是对 Windows Server Backup(显然?)提供的替代方案感兴趣。)
答案1
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 服务未运行时,Windows 中运行的备份程序无权访问数据文件,必须使用 SQL Server 备份执行备份。
使用 SQL Writer 服务允许 Windows 备份程序在 SQL Server 运行时复制 SQL Server 数据文件。
引自SQL 编写器服务部分:“目的”
这就是 Windows Server Backup 中发生的全部事情。
SQL Server 运行时使用 Windows Server Backup 创建的备份应该一致,但尚未写入磁盘的事务不在卷影副本中。数据库快照是在联机时拍摄的。
然而 MSDN 文章快照备份状态:
仅以下类型的备份可以是快照备份:
- 完整备份
- 部分备份
- 文件备份
- 差异数据库备份。仅当供应商使用 VSS 接口时才支持这些备份。
此外:
除本主题前面所述外,快照备份在功能上与相应的常规备份相同。 可以将快照备份与非快照完整备份、差异备份和日志备份一起用于还原序列。 与其他备份一样,快照备份在 msdb 数据库中进行跟踪,其中快照备份由 backupset.is_snapshot = 1 标识。 有关 msdb 的详细信息,请参阅 msdb 数据库。
SQL Server 不支持从快照备份进行在线还原。还原快照备份会自动使数据库脱机。逐块还原可以合并快照备份,但所有还原序列都是脱机还原。有关逐块还原的详细信息,请参阅执行逐块还原。
回答您的问题:
- 我只需要备份 .mdf 吗?.mdf 和 .ldf 呢?
- 是线上还是线下?
- 恢复以这种方式备份的 SQL Server 数据库的官方程序是什么?
- 进行增量/差异备份时有什么特别需要考虑吗?
- 所有这些记录在哪里?
答案:
- 是的,您可以对 .mdf 和 .ldf 文件进行 Windows Server Backup (VSS) 复制。备份应该一致,但恢复后数据库将处于脱机状态。
- 如果 SQL Server 停止/数据库分离/数据库脱机,则 .mdf 和 .ldf 文件的 VSS 副本是 100% 一致的。
- 我不确定如何将使用 Windows Server Backup 进行的数据库还原到某个时间点,因为数据库是在脱机状态下还原的。处于脱机状态的数据库无法进一步还原/恢复,将数据库置于联机状态会导致数据库被视为完全恢复。我建议使用单独的 SQL Server FULL、DIFF 和 TLOG 备份,以确保您可以将数据库还原到某个时间点。
- 事务日志不是使用 Windows Server Backup 创建的快照的一部分,应另外执行。第三方供应商支持将差异快照作为备份序列的一部分,但 Windows Server Backup 似乎无法执行差异备份。在这种情况下,您还必须执行额外的差异备份。(参见 3。)
- 不同的参考
在实际应用中进行解释
在我们的环境中,我们遇到了类似的情况,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
VMware 快照将在 MSDB 数据库历史表中为执行的每个 VMware 快照创建一个条目IS_SNAPSHOT = 1
(FULL
每日)。本机(以及使用本机的 Commvault)SQL Server 备份使用 FULL、DIFF 和 TLOG 备份进行。这些备份未标记为 IS_SNAPSHOT,并且作为 msdb 数据库备份表中的附加 FULL(每周一次)、DIFF(每隔一天)和 LOG(每小时)条目存在。
通过此设置,我们可以执行恢复到快照日期时间,然后使数据库联机,或者我们可以使用“本机”SQL Server 备份执行单独恢复到任何时间点。
答案2
你不能。或者至少你不应该。就 SQL Server 数据库而言,本机备份是受支持的方法。
我认为您可能误解了 TechNet 文章的内容。您引用的评论并不表明您可以将 Windows Server 备份用于 SQL Server 数据库。它实际上只是强调 Windows Server 备份使用与 SQL Server 相同的卷影复制服务。更多信息:TechNet:SQL 编写器服务
答案3
Sql 备份不仅复制数据,还会截断日志。您可以在手册页中找到数百个可以帮助您的选项,例如动态压缩备份文件。
我记得 vss 备份用于复制冻结的虚拟机或对 SAN 上的 lun 进行快照以备份静态映像,但备份将像电源中断一样“崩溃一致”,而不是真正一致。
有关的
- ServerFault.com,2010 年 9 月 18 日,使用卷影复制的 SQL Server 备份
- ServerFault.com,2015 年 7 月 20 日,如果使用 VSS 直接备份 SQL Server 数据是否安全?
答案4
我思考它使用一种称为“快照备份”的特殊备份类型。
来自 SQL Server 2008 文档:
SQL Server 快照备份也被 Microsoft Windows Server 2003 卷影复制服务 (VSS) 以及使用此框架的所有备份软件和存储软件使用。有关更多信息,请参阅 SQL Writer 服务。
对我来说这一切都很不清楚。特别是这是否会截断事务日志。