[SQL SERVER]SQL2016-AlwaysOn AG備份考量

介紹個人AlwaysOn AG備份考量

1.你會設定在那執行backup jobs?

慣用次要(Prefer Secondary)、僅次要(Secondary Only)、主要(Primary)、任何複本(Any Replica) ?

A:任何副本(Any Replica),忽略角色並依照每個副本執行備份優先權或伺服器名稱(字母排序)。

假設Failover(角色互換)後,你絕對不想問自己,現在的Server是否可以正確執行備份嗎?

 

2.Backup 檔案你將寫在那裏?

A:使用share folder (UNC path),讓所有伺服器都能存取。

減少維護目錄結構差異和設定檔案存取權限負擔。

 

3.•你如何知道那個副本是首選備份?

select d.database_name,  sys.fn_hadr_backup_is_preferred_replica (d.database_name) AS IsPreferredBackupReplicaNow  
from sys.availability_databases_cluster d join sys.availability_groups ags on d.group_id=ags.group_id
where ags.name='AG2'

 

Demo

如何在所有複本建立備份Agent job?

1.撰寫/產生備份 scripts

Note:

@使用sys.fn_hadr_backup_is_preferred_replica(‘mydbname’)判斷是否在備份所慣用的複本上,保證只有其中一個排程作業會實際執行備份作業

@增加Copy_only(交易紀錄備份不需要 )

DECLARE @preferredReplica int

SET @preferredReplica = (SELECT [master].sys.fn_hadr_backup_is_preferred_replica('DemoQueryStore'))

IF (@preferredReplica = 1)
BEGIN
    declare @mybackupfullpath1 nvarchar(500),@mybackupfullpath2 nvarchar(500);
	set @mybackupfullpath1=N'\\win2k12r2a\sqlbackup$\DemoQueryStore\DemoQueryStore_Full_'
	+replace( replace(replace( convert(varchar(20),GETDATE(),120),'-','_'),' ','_'),':','')+'_1.bak'
	set @mybackupfullpath2=N'\\win2k12r2a\sqlbackup$\DemoQueryStore\DemoQueryStore_Full_'
	+replace( replace(replace( convert(varchar(20),GETDATE(),120),'-','_'),' ','_'),':','')+'_2.bak'     
	BACKUP DATABASE [DemoQueryStore] TO  DISK = @mybackupfullpath1,disk= @mybackupfullpath2
	WITH  COPY_ONLY, NOFORMAT, NOINIT, SKIP, REWIND, NOUNLOAD, COMPRESSION,  STATS = 10
END

2.在所有複本建立Agent job並執行測試

 

參考

[SQL SERVER]SQL2016-Alwayson AG了解備份喜好設定