提问人:Eric Wild 提问时间:2/24/2017 最后编辑:Eric Wild 更新时间:5/30/2017 访问量:189
Azure 恢复服务和 SQL 2014 托管备份不能很好地协同工作
Azure Recovery Services and SQL 2014 Managed Backups not playing well together
问:
我开始在我的 SQL Server 上使用托管备份。一年多来,它一直运行良好。它似乎每周备份一次数据库,每 2 小时进行一次增量备份。
一个月前,我们将 VM 备份解决方案更改为 Azure 恢复服务。我们开始每天晚上运行它。当 Azure 恢复服务在晚上运行时,从 Windows 和 SQL 日志来看,它似乎在执行卷影复制之前会对每个数据库进行备份。它们以 TYPE=VIRTUAL_DEVICE: 和大 GUID 的形式输入到日志中,并创建一个新的数据库 lsn 编号。发生此 VM 备份时,我的每周托管备份将失效。
当我查看 SQL 托管备份存储其记录以跟踪其备份的 msdb.dbo.smart_backup_files 表时,我可以看到有 2 个字段似乎很重要。backup_type。当等于 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备份。当我通过Enterprise Manager打开数据库,然后单击数据库的Restore时,它会提取最新的完整备份(在本例中为Recovery Manager完整备份)及其日志文件。如果我单击完整备份条目,它会认为该文件位于 SQL Server 备份文件夹中,文件名为 GUID。该文件不存在,或者它可能存在于我无法在 Azure 恢复服务中查看的夜间 VM 备份中。无论哪种方式,我的每周托管备份都会在本周剩余时间内失效。
有谁知道如何让这两者一起工作?我希望有一个完整的 VM 备份,以防 SQL Server 上安装了错误的东西,我们需要进行完全还原,并且我希望每周进行一次带有增量日志文件的完整备份,以防我们需要还原一个数据库。
答:
听起来好像您正在寻找差异备份。这些将包含上次完整备份后添加到数据库的所有内容。
也就是说,您在周日晚上进行完整备份,之后每天进行差异备份。在星期一晚上,您的差异备份将包含自备份以来添加的所有内容。在星期二,它将包含星期一包含的所有内容,以及从那时起更改的所有内容。
如果使用事务日志备份执行相同的操作,则星期一晚上的备份实际上与上述差异备份相同。但是,星期二版本的事务日志备份将只包含星期一事务日志备份时所做的更改。
在还原方面,这意味着为了还原到某个时间点,您必须按顺序(星期一、星期二等)还原最新的完整备份(星期日),然后还原此后的每个事务日志备份。
但是,使用差异备份时,您将还原最新的完整备份(星期日),然后还原最新的差异备份(星期二,如果在星期三还原)。
评论