Azure 恢复服务和 SQL 2014 托管备份不能很好地配合使用

Posted

技术标签:

【中文标题】Azure 恢复服务和 SQL 2014 托管备份不能很好地配合使用【英文标题】:Azure Recovery Services and SQL 2014 Managed Backups not playing well together 【发布时间】:2017-07-15 07:01:34 【问题描述】:

我开始在我的 SQL 服务器上使用托管备份。一年多来一直运行良好。好像是每周备份一次db,每2小时做一次增量。

一个月前,我们将 VM 备份解决方案更改为 Azure 恢复服务。我们开始每天晚上运行它。当 Azure 恢复服务在晚上运行时,从 Windows 和 SQL 日志看来,它会在执行卷影复制之前对每个数据库进行备份。它们以 TYPE=VIRTUAL_DEVICE: 和一个大 GUID 的形式输入到日志中,并创建一个新的数据库 lsn 号。发生此 VM 备份时,我的每周托管备份将失效。

当我查看 SQL 托管备份存储其记录以跟踪其备份的 msdb.dbo.smart_backup_files 表时,我可以看到有 2 个字段似乎很重要。备份类型。当它等于 1 时,它是完整备份,当它是 2 时,它是日志。下一个字段是 backup_database_lsn。该字段表示可以应用日志的完整备份。

当 SQL 托管备份每周运行一次完整备份时,会创建一个新的 lsn 编号,并且随后创建的每个日志文件在 backup_database_lsn 编号中都有一个值,该值指向完整 SQL 的该 lsn 编号那一周的托管备份。

现在,当 Azure 恢复服务每晚运行时,会从日志中的 TYPE=VIRTUAL_DEVICE 行创建一个完整数据库 lsn 编号。当我查看托管备份表 (msdb.dbo.smart_backup_files) 时,我可以看到所有随后的日志文件曾经指向托管备份的完整 lsn 编号,现在都指向恢复服务备份的 VIRTUAL_DEVICE 的新 lsn 编号.

如果我需要恢复托管备份,我只能获得完整备份和 1 天的日志。之后,所有日志文件现在都指向恢复服务 VIRTUAL_DEVICE 备份,但实际上并不存在。

我已寻找 VIRTUAL_DEVICE 备份。当我通过企业管理器打开数据库并单击数据库的还原时,它会提取最新的完整备份(在本例中为恢复管理器完整备份)及其日志文件。如果我单击完整备份条目,它会认为该文件位于 SQL Server 备份文件夹中,文件名是 GUID。该文件不存在,或者它可能存在于我无法在 Azure 恢复服务中查看的夜间 VM 备份中。无论哪种方式,我的每周托管备份都将在本周剩余时间内失效。

有谁知道如何让这两者一起工作?我想要一个完整的虚拟机备份,以防在 SQL Server 上安装了坏东西并且我们需要进行完整还原,并且我想要一个带有增量日志文件的每周完整备份,以防我们需要还原一个数据库。

【问题讨论】:

您可能会在 dba.stackexchange.com 上找到更多专业知识 每天进行一次完整备份对您有好处吗(在性能方面也是如此) 【参考方案1】:

听起来好像您正在寻找差异备份。这些将包含上次完整备份后添加到数据库的所有内容。

即您在周日晚上进行完整备份,之后每天进行差异备份。在星期一晚上,您的差异备份将包含自备份以来添加的所有内容。周二,它将包含周一所包含的所有内容,以及从那时起发生的所有变化。

如果您使用事务日志备份执行相同的操作,您的周一晚上备份实际上将与上述差异备份相同。但是,周二版本的事务日志备份将只包含从周一事务日志备份开始的更改。

在恢复方面,这意味着为了恢复到某个时间点,您必须恢复最新的完整备份(星期日),然后是 每个 事务日志备份,因为, 按顺序(星期一、星期二等)。

不过,如果使用差异备份,您将恢复最新的完整备份(周日),然后是最新的差异备份(周二,如果您要在周三恢复)。

【讨论】:

以上是关于Azure 恢复服务和 SQL 2014 托管备份不能很好地配合使用的主要内容,如果未能解决你的问题,请参考以下文章

我可以备份存储在 Azure 托管实例中的服务主密钥吗?

Azure - 数据库迁移服务中永无止境的完整备份上传

Azure Backup 使用Azure恢复服务,备份Azure虚拟机

利用Azure backup备份和恢复Azure虚拟机

利用Azure backup备份和恢复Azure虚拟机

30.从 Azure 备份服务器恢复数据