AlwaysOn group的一個新特性是允許在secondary replica進行backup,將backup的負載從primary replica上移除去。
并且提供了Backup preference選項,用于在AlwaysOn Availability Group環境下對備份進行管理。需要強調的是,Backup Preferences并沒有強制作用,設定之后,依然可以在任意一個replica上進行備份。
下面用一個例子解釋如何使用Backup preference
環境
===
Secondary node: SQL108W2K8R21.
Secondary node: SQL108W2K8R22.
Primary node: SQL108W2K8R23.
Availability group: AgGroupTest
Replica database: dbtest1
打開AvwaysOn High Availability ->Availability Groups->右鍵所需要的Availability Replicas->Properties.
會彈出下面的窗口,點擊左面的Backup Preference。
Backup Preference選項分別如下:
Prefer Secondary
優先級高的secondary replica會被設定為Prefer replica ,如果所有的secondary replica優先級相同,那么系統會隨機挑選一個作為Prefer replica.
如果高優先級的secondary replica不可用,那么第二高的會被選擇為prefer replica,以此類推。
如果primary是唯一可用的replica,那么primary為成為prefer replica。
Secondary only
Primary replica永遠不會成為prefer replica, 其余的和Prefer Secondary相同
Primary
只有Primary replica成為prefer replica。
Any Replica
優先級高replica的成為replica
如果replica勾選了Exclude Replica,則該replica不會成為prefer replica
那么如何將backup preference應用到我們的backup計劃中呢?下面是一個例子
在所有的replica中建立一個full backup作業,該作業每天運行一次,腳本如下
declare @n int
select @n=sys.fn_hadr_backup_is_preferred_replica ( 'dbtest1' )
if @N=1
begin
declare @timestamp sysname
set @timestamp= replace(replace(CONVERT(char(16),GETDATE(),120),':','_'),' ','_')+'.bak'
declare @dbName sysname
set @dbName='dbtest'
declare @path sysname
set @path='//sharefolder/'--for example c:/backup/
declare @backup nvarchar(200)
set @backup='backup database '+quotename(@dbName,']')+' to disk='+''''+@path+@dbName+@timestamp+''' with copy_only'
exec (@backup)
end
在所有的replica中建立一個log backup作業,該作業每天15分鐘一次,腳本如下
declare @n int
select @n=sys.fn_hadr_backup_is_preferred_replica ( 'dbtest1' )
if @N=1
begin
declare @timestamp sysname
set @timestamp= replace(replace(CONVERT(char(16),GETDATE(),120),':','_'),' ','_')+'.bak'
declare @dbName sysname
set @dbName='dbtest'
declare @path sysname
set @path='//sharefolder/'--for example c:/backup/
declare @backup nvarchar(200)
set @backup='backup log '+quotename(@dbName,']')+' to disk='+''''+@path+@dbName+'_log'++@timestamp+''''
exec (@backup)
end
這個備份作業使用到了sys.fn_hadr_backup_is_preferred_replica函數,該函數會根據backup preference的設定來判斷當前節點是否為prefer replica,如果是,就進行備份,否則退出。
該函數返回0和1,0代表NO,1代表 YES. 這樣就保證同一時刻只有一個replica可以進行備份操作。
如果您使用Maintenance Plan來創建計劃,默認情況下會自動使用Backup preference.
最后是兩個關于backup preference的bug fix
FIX: 100 percent of CPU resources are used after you enable the Log Shipping feature for some databases in SQL Server 2012 http://support.microsoft.com/kb/2887115
FIX: The system function sys.fn_hadr_backup_is_preferred_replica does not work correctly after you have CU7 for SQL Server 2012 SP1 installed http://support.microsoft.com/kb/2918791
新聞熱點
疑難解答