我正在使用 Microsoft System Center Data Protection Manager 2016 来保护 Windows Server 2016 上的 SQL Server 2017。我相信每当 DPM 进行备份(同步或快速完整备份)时,它都会在数据传输到 DPM 服务器之前暂时使用 SQL Server 主机上的某些空间。
我发现了一些支持这一观点的证据,特别是对于事务日志备份,https://blogs.technet.microsoft.com/dpm/2013/08/21/optimizations-in-protecting-sql-databases-with-high-churn-by-dpm/ 部分内容如下
临时事务日志文件存储在名为“DPM_SQL_POTECT\”+“MachineName”+“SQL Server 实例名称\”+“数据库名称”+“_log.ldf\Backup\”的文件夹中。此文件夹与日志定义文件位置相同。
(请注意,在帖子的其他地方可以清楚地看到目录名称实际上是以 开头的DPM_SQL_PROTECT
,只是我引用的部分有拼写错误)。
但是,我找不到有关快速完整备份(即 SQL Server 完整数据库备份)临时空间使用情况的任何类似信息。查看受保护 SQL Server 上的 DPMRA.errlog 文件表明使用了本地 VSS 卷影副本空间:
CMultiVolumeUsnIterator:AddIncludeFiles(文件路径:e:\Program Files\ Microsoft SQL Server\MSSQL14.SQLNGR1\MSSQL\Data\,文件规范:kslds.mdf,快照路径:\? \GLOBALROOT\Device \HarddiskVolumeShadowCopy9\Program Files\Microsoft SQL Server\MSSQL14.SQLNGR1\MSSQL\Data)
但我不确定我的解释是否正确。此外,在该受保护的服务器上,尽管已完成许多快速完整备份,但vssadmin list shadowstorage
报告
未找到满足查询条件的项目。
这似乎与 VSS 空间正在被使用的想法相矛盾。
最后,SQL Server 自己的日志中有与快速完整备份相对应的条目,这些条目将转储设备标识为
设备信息:(FILE=1,TYPE=VIRTUAL_DEVICE:{'{990A7582-1356-4B6B-8D70-8F3235748794}1'})
其中 GUID 似乎每次都会改变,但我一直无法找到有关虚拟设备背后的真实存储是什么的任何解释。
是否有人知道如何确定(并控制)受保护服务器上用于这些备份的位置和空间量?
谢谢!
马丁
答案1
根据 Microsoft 支持,对拼写错误等进行了微小编辑:
对于快速完整备份,DPM 将创建托管 SQL 数据库文件的卷的卷影副本。在对 SQL 日志和数据库文件执行写入时,写入时复制会将数据复制到位于系统卷信息文件夹中的快照文件。快照的大小取决于备份的持续时间和备份过程中的数据变动量(对文件的更改)。
该空间用于托管数据库和日志文件的卷。对于 Express Full,您可以使用 VSSADMIN.EXE 重定向 VSS 快照的位置,方法是删除当前的影子存储空间并将其添加到另一个卷。例如,要从 E: 卷移动到 S: 卷:
vssadmin Delete ShadowStorage /For=E: /On=E:
vssadmin Add ShadowStorage /For=E: /On=S: /MaxSize=UNBOUNDED
另请参阅 MS 支持:
如果所有 SQL 数据库都位于同一个保护组中,它们将按顺序备份,并且每次备份都会创建一个新的影子副本。如果 SQL DB 位于不同的 PG 中但计划同时运行,则多个影子副本将处于活动状态。
最后,MS 支持确认有关事务日志文件临时副本存储的描述(如问题中所述)对于 SQL Server 2017、DPM 2016 和 Windows Server 2016 仍然正确。