Azure 恢复服务和 SQL 2014 托管备份不能很好地协同工作

问题描述 投票:0回答:2

我开始在 SQL 服务器上使用托管备份。它已经运行良好一年多了。似乎每周备份一次数据库,并且每 2 小时进行一次增量。

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

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

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

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

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

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

有谁知道如何让这两者一起工作?我希望有一个完整的虚拟机备份,以防 SQL Server 上安装了错误的东西,并且我们需要进行完整恢复,并且我希望每周进行一次包含增量日志文件的完整备份,以防我们需要恢复数据库。

sql-server database azure sql-server-2014
2个回答
0
投票

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

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

如果您使用事务日志备份执行相同操作,则周一晚上的备份实际上与上述差异备份相同。但是,星期二版本的事务日志备份将仅包含自星期一事务日志备份以来的更改。

说到恢复,这意味着为了恢复到某个时间点,您必须恢复最新的完整备份(周日),然后依次恢复自此以来的每一个事务日志备份(周一、周二) , ETC。)。 但是,使用差异备份,您将恢复最新的完整备份(周日),然后恢复最新的差异备份(周二,如果您要在周三恢复)。


0
投票
发生此虚拟机备份时,我每周的托管备份将失效。

这是错误的,没有一个
full backup

因服用其他

full backup
而失效, 您新添加的备份会更改
differential base
,因此它们
可能
会影响您的差异备份,但您不使用它们。 即使您看到日志备份中报告的

log backup chain

发生更改,您的

database_backup_lsn
也不会受到影响:它仅显示最新的完整备份lsn,但这并不意味着您必须从此完整备份和SSMS开始还原只是向您展示最简单(最短)的恢复方法。
但是没有任何改变(SSMS 自动化除外),

我想每周进行一次包含增量日志文件的完整备份 万一我们需要恢复一个数据库。

您仍然可以执行此操作,但您应该从托管备份中手动创建正确的恢复链,只是排除其他备份

© www.soinside.com 2019 - 2024. All rights reserved.