介紹個人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並執行測試
參考