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

时间:2017-02-24 12:32:57

标签: sql-server database azure sql-server-2014

我开始在SQL服务器上使用托管备份。它已经运作了一年多。它似乎每周备份一次dbs,每2小时取一次增量值。

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

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

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

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

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

我找了VIRTUAL_DEVICE备份。当我通过Enterprise Manager打开数据库,并单击Restore for a database时,它会提取最新的完整备份(在本例中为Recovery Manager完全备份)及其日志文件。如果我单击完整备份条目,它会认为该文件位于SQL Server备份文件夹中,文件名是GUID。该文件不存在,或者它可能存在于我无法在Azure恢复服务中查看的夜间VM备份中。无论哪种方式,我的每周托管备份在本周余下的时间都无效。

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

1 个答案:

答案 0 :(得分:0)

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

即。你在周日晚上进行完整备份,每天都有差异备份。在星期一晚上,您的差异备份将包含自备份以来添加的所有内容。星期二,它包含星期一包含的所有东西,以及从那以后一切都改变了。

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

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

但是,使用差异备份,您将恢复最新的完全备份(星期日),然后是最新的差异备份(星期二,如果您在星期三恢复)。