我在 SQL 作业中有这段代码,可以按小时运行数据库备份。
IF sys.fn_hadr_backup_is_preferred_replica('AdventureWorks') = 1
BEGIN
declare @seq varchar(7) = '-' + Right('00' + cast(datepart(HOUR, getdate()) % 24 as varchar(2)), 2) + '.bak'
...
WITH INIT, FORMAT, COPY_ONLY, CREDENTIAL = 'AdventureWorksAzureBackupStorage', compression, stats=1
END
我的问题是,如果我取出检查fn_hadr_backup_is_preferred_replica
并运行
BEGIN
declare @seq varchar(7) = '-' + Right('00' + cast(datepart(HOUR, getdate()) % 24 as varchar(2)), 2) + '.bak'
...
WITH INIT, FORMAT, COPY_ONLY, CREDENTIAL = 'AdventureWorksAzureBackupStorage', compression, stats=1
END
首先在 A 上,然后在 B 上,然后数据库的大小差异很大,例如,主动节点数据库备份比被动节点数据库备份大 8 倍。
请问这有解释吗?也许活动节点没有被压缩?而被动节点被压缩了?
AGs
写入只能发生在主节点上。自从引入了 AlwaysOn Availabiliy Groups 功能后,我们有了新的选项来使备份策略更完整,但也更复杂。利用辅助副本,我们可以将 FULL 甚至事务日志备份从主副本卸载到辅助副本,让主副本专用于生产应用程序。例如,我在这里附上一个“备份首选项”窗口屏幕,以便您更好地理解。
笔记
根据 此处的 mssqltips 博客文档
微软为我们提供了一个名为
sys.fn_hadr_backup_is_preferred_replica
. 如果当前实例不是首选备份位置,或者1
根据首选项和优先级设置它是备份的首选副本,则此函数将返回 0“备份优先级”设置的 AG 行为:
具有较低值的副本将排在队列的末尾。只有在没有其他副本可用时才会使用这些副本。具有较高优先级值的副本将位于备份副本选择的顶部。在有两个或多个具有相同优先级值(权重)的副本的情况下,SQL Server 将根据字母顺序给予优先级。
供您进一步参考了解 AlwaysOn 可用性组和此处的备份