Backup

同一數據庫的 SQL 2014 可用性組從節點 A 到節點 B 產生不同大小的備份

  • August 17, 2016

我在 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 可用性組功能,我們獲得了新的選項來使備份策略更加完整,但也更加複雜。利用輔助副本的優勢,我們可以將 FULL 甚至事務日誌備份從主副本解除安裝到輔助副本,使主副本專用於為生產應用程序提供服務。

例如,我在此處附加了一個“備份首選項”視窗螢幕,以便您更好地理解。

在此處輸入圖像描述

筆記

1)Full and differential backups always run on the primary replica.
2)Full copy only and transaction log backups run either on the primary replica, if the primary replica is set as the preferred replica for running backups, or on the secondary replica with the highest backup priority.
3)For successful backup of availability databases, verify that the secondary replica can communicate with the primary replica, and that the replicas are either Synchronized or Synchronizing.

根據 mssqltips 部落格文件 這裡

微軟為我們提供了一個名為sys.fn_hadr_backup_is_preferred_replica. 如果目前實例不是首選備份位置,或者1根據首選項和優先級設置它是備份的首選副本,則此函式將返回 0

IF sys.fn_hadr_backup_is_preferred_replica(@DatabaseName) = 1
BEGIN
 --Perform backup
END

“備份優先級”設置的 AG 行為:

具有較低值的副本將位於隊列的末尾。只有在沒有其他可用的情況下才會使用這些副本。具有較高優先級值的副本將位於備份副本選擇的頂部。如果有兩個或多個具有相同優先級值(權重)的副本,SQL Server 將根據字母順序給予優先級。

供您進一步參考了解 AlwaysOn 可用性組此處的備份

引用自:https://dba.stackexchange.com/questions/147037