如果使用 VSS 直接备份 SQL Server 数据是否安全?

如果使用 VSS 直接备份 SQL Server 数据是否安全?

我有一个客户端,它有一个非常基本的单服务器设置,其中包括一个小型 SQL Server Express 数据库。

我最近为他们配置了 Symantec Backup Exec 2010 Quickstart 版本。这是免费的、功能有限的 Backup Exec OEM 版本,不包括 SQL Server Agent(或任何应用程序代理)。但是,它通过 Advanced Open File Option (AOFO) 支持 VSS。在这种情况下,我总是配置一个计划任务来转储数据库并备份转储,这样我就可以确保我有一个一致的备份。

然而,在启用 AOFO 的情况下对整个盒子进行初始测试作业后,我注意到它很高兴地备份了 SQL 数据文件,包括 MDF/LDF 文件,并且只是给了我一个非常温和的“建议”,我可能要考虑购买 SQL Server Agent,因为它已经检测到了 SQL Server 数据。这在两个方面让我感到惊讶:

  1. 据我了解,除非您通过注册表项手动禁用此功能,否则 Backup Exec 会自动使用 Active File Exclusion(或“AFE”)功能从平面文件备份中排除 MDF/LDF 文件。我的理解是,这是因为它总是直接支持他们不是一个好主意。因此,他们没有被排除在外这一点很奇怪,也许是故意的。
  2. 没有任何严重警告表明 SQL 数据可能不一致、无法恢复或其他问题。只是对 SQL Agent 提出礼貌建议。

这让我想知道,如果您使用 VSS(通过 AOFO),直接备份 SQL Server 数据是否真的安全?毕竟,这可能意味着在拍摄快照之前调用 SQL Server VSS Writer 来确保数据文件与应用程序一致。尽管 Backup Exec 已经识别出 SQL 数据,但它似乎“允许”我这样做。

我知道使用专用 SQL 代理有很多好处,但单纯就进行基本、一致、可恢复的备份而言,这安全吗?

似乎这个问题没有明确的答案,而且存在一些争议。显然,如果没有答案,我会采取久经考验的路线,但这让我陷入思考。

以下是我目前发现的一些内容:

答案1

想想正在发生的事情。SQL 数据库随时可能将复杂的事务写入整个 MDF 文件中的多个行和表。如果在这些复杂事务进行时进行备份,则数据库的一部分将在事务的第一部分写入之前备份,另一部分则在之后备份。如果它是一个包含很多列的表,理论上它可以在写入一行时复制文件的那部分。现在您有一个不一致的数据库,数据库日志无法知道。卷影复制将复制卷,但可以冻结卷...他们说是一分钟,但是.....还有大量的依赖项和陷阱。如果你愿意的话可以依赖它,但我不确定为什么。 https://www.brentozar.com/archive/2018/01/perils-vss-snaps/

SQL 备份中正在发生的事情的概念视图。真正的 SQL 备份在进行备份时会停止将更改写入数据库。它继续记录所有更改,并从与数据库读取混合的日志中适当地读取这些更改。备份数据库后,将启动新日志,并备份到该点的日志。当您恢复它时,数据库将被恢复,然后应用正在发生的日志文件。这样一切都稳定可靠。根据简单或完整恢复模型,这有不同的细微差别,但基本原理是相同的。保证备份的文件不会改变。这一切都是由数据库完成的,特别是对于数据库完整性的细微差别。这是值得信赖的。

相关内容