使用第三方 VSS 备份加上本机 SQL 备份

Evi*_*lDr 2 sql-server backup vss

我有一个 SQL 数据库服务器,它使用R1Soft 备份备份每 24 小时在 02:00 进行一次服务器备份。这是一个完整的文件系统备份(裸机加上每日差异,因此包括操作系统等)。

我想增加一些数据库的备份频率,以便在发生故障时,我可以恢复到15分钟的时间窗口,例如

  1. 04:00 完整备份
  2. 之后每分钟备份一次 Tran 日志

我无法找到任何关于清晰度是否R1Soft备份(通过完成VSS写入),会引起我的做法任何问题(particuarly打破日志链)。我对 VSS 知之甚少,而且我读得越多,它就越令人困惑。

我联系了 R1Soft 澄清,他们的回应是:

我们正在使用 VSS 进行 SQL 备份。您可以使用这两种解决方案,只要它不会同时运行。我们使用 VSS 编写器将日志刷新到数据中,然后完全备份数据库。

这对我来说毫无意义,因为我不知道他们所说的"data"是什么意思,并且它没有澄清日志链问题。因此,任何有 VSS 经验的人都可以澄清 VSS 备份是否“干扰”本机完整/传输日志备份?从我的研究中,我看到了相互矛盾的消息,因为 Microsoft 站点指出:

SQL Writer 不支持...日志备份

我不知道我是否应该按照我的建议去做,还是应该改为

  • 要求服务器主机修改数据库备份频率为15分钟
  • 防止 R1Soft 数据库备份,并手动处理,然后让它只是影子复制备份文件

任何输入,即使只是为了突出我应该问他们的问题,也将不胜感激。我读得越多,我就越困惑。

根据答案更新

database_name   backup_start_date       backup_finish_date      expiration_date   backup_type backup_size MB     logical_device_name     physical_device_name                                backupset_name  description   is_copy_only is_snapshot checkpoint_lsn        database_backup_lsn   differential_base_lsn  first_lsn             fork_point_lsn   last_lsn
--------------- ----------------------- ----------------------- ----------------- ----------- ------------------ ----------------------- --------------------------------------------------- --------------- ------------- ------------ ----------- --------------------- --------------------- ---------------------- --------------------- ---------------- ---------------------
myDb            2017-09-13 02:00:04.000 2017-09-13 02:00:05.000 NULL              Full        1525.43896484375   NULL                    {D827E1B8-FDB7-4AE5-9264-08D4CA29536A}1             NULL            NULL          1            1           12207000004436400001  12207000004429300036  NULL                   12207000004436400001  NULL             12207000004436700001
myDb            2017-09-13 00:11:00.000 2017-09-13 00:11:01.000 NULL              Full        1525.44726562500   NULL                    {9B33317C-CABA-42DD-9839-9D4599A91205}1             NULL            NULL          0            1           12207000004429300036  12207000003990700036  NULL                   12207000004429300036  NULL             12207000004431300001
myDb            2017-09-12 02:00:13.000 2017-09-12 02:00:14.000 NULL              Full        1525.32031250000   NULL                    {57B7F13B-9461-48C2-8BB3-3DA651485DC6}1             NULL            NULL          1            1           12207000003995300034  12207000003990700036  NULL                   12207000003995300034  NULL             12207000003996900001
myDb            2017-09-12 01:11:28.000 2017-09-12 01:11:29.000 NULL              Full        1525.32226562500   NULL                    {924FE276-544D-40F6-93A2-C2375868DB07}1             NULL            NULL          0            1           12207000003990700036  12207000003659900164  NULL                   12207000003990700036  NULL             12207000003992700001
myDb            2017-09-11 13:33:08.000 2017-09-11 13:33:25.000 NULL              Full        1526.40234375000   NULL                    D:\HostedFiles\Autobackup\bak\20170911_myDb.bak     NULL            NULL          1            0           12207000003837600221  12207000003659900164  NULL                   12207000003837600221  NULL             12207000003846900001
myDb            2017-09-11 00:07:59.000 2017-09-11 00:08:00.000 NULL              Full        1525.28271484375   NULL                    {713D7A36-D4F2-4B2F-A0C1-B079DE03F396}1             NULL            NULL          0            1           12207000003659900164  12207000003645600222  NULL                   12207000003659900164  NULL             12207000003666600001
myDb            2017-09-10 02:00:17.000 2017-09-10 02:00:17.000 NULL              Full        1525.25146484375   NULL                    {3C42FCFF-BF45-49D6-AD78-57039DB7B4DA}1             NULL            NULL          1            1           12207000003657200001  12207000003645600222  NULL                   12207000003657200001  NULL             12207000003657500001
myDb            2017-09-10 00:05:34.000 2017-09-10 00:05:36.000 NULL              Full        1525.29394531250   NULL                    {AC33EA68-9B40-4CE6-A2E5-76DE908AD813}1             NULL            NULL          0            1           12207000003645600222  12207000003613700036  NULL                   12207000003645600222  NULL             12207000003654600001
myDb            2017-09-09 04:06:22.000 2017-09-09 04:06:23.000 NULL              Full        1525.26367187500   NULL                    {6BCA937F-7F1C-4A43-92D8-42366D36FA17}1             NULL            NULL          0            1           12207000003613700036  12189000000394000087  NULL                   12207000003613700036  NULL             12207000003616500001
myDb            2017-09-09 02:00:04.000 2017-09-09 02:00:21.000 NULL              Full        1525.28076171875   NULL                    {6CD064AC-D2DC-4F84-97A7-88C3D959FEF4}1             NULL            NULL          1            1           12207000003607000144  12189000000394000087  NULL                   12207000003607000144  NULL             12207000003613500001
myDb            2017-09-08 02:00:04.000 2017-09-08 02:00:07.000 NULL              Full        1524.68896484375   NULL                    {92C322C7-AB8A-4747-A765-4D63A86BDC50}1             NULL            NULL          1            1           12189000000855600001  12189000000394000087  NULL                   12189000000855600001  NULL             12189000000855900001
myDb            2017-09-08 00:30:00.000 2017-09-08 00:30:17.000 NULL              Full        1525.38671875000   NULL                    D:\HostedFiles\Autobackup\bak\20170908_myDb.bak     NULL            NULL          1            0           12189000000846800208  12189000000394000087  NULL                   12189000000846800208  NULL             12189000000855600001
myDb            2017-09-07 07:42:05.000 2017-09-07 07:42:06.000 NULL              Full        1524.51806640625   NULL                    {77D9CBB9-60E4-4D19-99CF-B92499E33BA7}1             NULL            NULL          0            1           12189000000394000087  12188000005293700036  NULL                   12189000000394000087  NULL             12189000000397700001
myDb            2017-09-07 02:00:05.000 2017-09-07 02:00:10.000 NULL              Full        1524.54052734375   NULL                    {4D94E390-FBCD-42D5-9191-A7AE9CED4932}1             NULL            NULL          1            1           12189000000384900197  12188000005293700036  NULL                   12189000000384900197  NULL             12189000000393200001

(14 row(s) affected)
Run Code Online (Sandbox Code Playgroud)

Joh*_* N. 6

我已经两次发布了与您的问题相关的答案。

VSS 备份会破坏日志链吗?
- 我的答案在这里

如何使用 Windows Server Backup 备份 SQL Server 数据库?
- 我的答案在这里

检查第 3 方备份

基本上,您必须检查msdb数据库中的备份历史记录,以了解如何使用 3rd 方软件创建数据库备份。

使用以下脚本,您可以检索一些与进一步调查相关的信息:

SELECT  
   CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS SRVNAME, 
   msdb.dbo.backupset.database_name,  
   msdb.dbo.backupset.backup_start_date,  
   msdb.dbo.backupset.backup_finish_date, 
   msdb.dbo.backupset.expiration_date, 

   CASE msdb..backupset.type  
       WHEN 'D' THEN 'Full'  
       WHEN 'I' THEN 'Diff'
       WHEN 'L' THEN 'Log'  
   END AS backup_type,  
   msdb.dbo.backupset.backup_size / 1024 / 1024 as [backup_size MB],  
   msdb.dbo.backupmediafamily.logical_device_name,  
   msdb.dbo.backupmediafamily.physical_device_name,   
   msdb.dbo.backupset.name AS backupset_name, 
   msdb.dbo.backupset.description,
   msdb.dbo.backupset.is_copy_only,
   msdb.dbo.backupset.is_snapshot,
   msdb.dbo.backupset.checkpoint_lsn,
   msdb.dbo.backupset.database_backup_lsn,
   msdb.dbo.backupset.differential_base_lsn,
   msdb.dbo.backupset.first_lsn,
   msdb.dbo.backupset.fork_point_lsn,
   msdb.dbo.backupset.last_lsn

FROM   msdb.dbo.backupmediafamily  
   INNER JOIN msdb.dbo.backupset 
   ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id  

WHERE 1 = 1
ORDER BY   2,3 desc
Run Code Online (Sandbox Code Playgroud)

重要的信息是is_copy_onlyis_snapshot列。

IS_COPY_ONLY

如果数据库备份历史将标志is_copy_only设置为 ,1则后续备份不需要这些(第 3 方)备份来将数据库恢复到一致状态。这是因为:

仅复制备份是独立于常规 SQL Server 备份顺序的 SQL Server 备份。通常,进行备份会更改数据库并影响以后备份的还原方式。但是,有时出于特殊目的而进行备份而不影响数据库的整体备份和还原过程会很有用。仅复制备份用于此目的。

参考: 仅复制备份 (SQL Server) (Microsoft Docs)

IS_SNAPSHOT

如果数据库备份历史的标志is_snapshot设置为 ,1那么您就知道该备份是使用触发SQL Server WriterSQL Server 的VSS 服务)的 3rd 方软件执行的,该软件允许 3rd 方软件几乎立即备份数据库.

来自关于什么是快照备份的官方文档:

SQL Server 快照备份是与第三方硬件或软件供应商或两者合作完成的。这些供应商使用专为此目的设计的 SQL Server 功能。底层备份技术创建了正在备份的数据的即时副本。瞬时复制通常通过拆分一组镜像磁盘或通过在写入磁盘块时创建磁盘块的副本来完成。这保留了原件。在恢复时,原始磁盘立即可用,底层磁盘的同步发生在后台。这导致几乎即时的恢复操作。

参考: 快照备份(Microsoft Technet)

使用此功能创建的备份也几乎可以立即恢复。

概括

第 3 方备份应标记为is_snapshot = 1is_copy_only = 1。这些备份不会与其他备份步骤冲突/程序使用本地SQL Server执行的BACKUP DATABASE...BACKUP DATABASE ... WITH DIFFERENTIAL....BACKUP LOG...语句。第 3 方数据库备份不是现有备份集的一部分。

回答您的问题

供应商正确声明,在(快速)快照备份期间,不应运行其他备份。

我们正在使用 VSS 进行 SQL 备份。您可以使用这两种解决方案,只要它不会同时运行。我们使用 VSS 编写器将日志刷新到数据中,然后完全备份数据库。

当第 3 方软件触发SQL Server VSS Writer服务时,本机备份可能会遇到问题,这主要会导致IO FrozenSQL Server中出现一条消息ERRORLOG。此时运行本机备份可能会导致错误。

然后你注意到了

SQL Writer 不支持...日志备份

正确的。在SQL编写器服务时,才会触发备份快照,不需要使用正常的语句机SQL Server备份。数据库的备份快照是触发SQL 编写器时数据库的事务一致状态。

差点忘了...

is_copy_only根据我的回答中进一步给出的描述,任何设置了标志的东西都不会破坏备份链。

解决方案

  1. 为灾难场景保留您的第 3 方快照。它们是一致的,可以使数据库快速恢复在线状态。

  2. 根据您的要求对您的数据库进行额外的 FULL、DIFF 和 LOG 备份。将这些备份存储在安全的地方,以确保在您必须将数据库恢复到 FULL、DIFF、LOG 或 Point-in-Time 时可以访问它们。


编辑问题后的附加信息

您可能想要跟进数据库备份(完整、差异、tlog)并copy_only阅读以下文章:

SQLskills.com

一般而言: COPY_ONLY当您想要在正常备份序列之外进行额外备份而不破坏任何内容时,建议进行备份。您的正常备份顺序不应基于COPY_ONLY备份。

  • @EvilDr - 即使你非常确定你知道一切是如何工作的 - 不要忘记通过对测试机器进行恢复来确认。“据任何人所知,一切都设置正确”距离“我们已经测试过,并且可以成功地恢复到我们想要的方式”还有很长的路要走。 (2认同)
  • 所以经过一番争论,我们证明确实是第三方工具运行不正常,并停止了它备份所有数据库。如果你有时间,我已经发布了一个跟进,我会对你的意见感兴趣。非常感谢,您的回答非常好。https://dba.stackexchange.com/questions/187063/does-sql-re-create-system-databases-if-they-are-lost-missing (2认同)