AlwaysOn group的一個(gè)新特性是允許在secondary replica進(jìn)行backup,將backup的負(fù)載從primary replica上移除去。
并且提供了Backup preference選項(xiàng),用于在AlwaysOn Availability Group環(huán)境下對備份進(jìn)行管理。需要強(qiáng)調(diào)的是,Backup Preferences并沒有強(qiáng)制作用,設(shè)定之后,依然可以在任意一個(gè)replica上進(jìn)行備份。
下面用一個(gè)例子解釋如何使用Backup preference
環(huán)境
===
Secondary node: SQL108W2K8R21.
Secondary node: SQL108W2K8R22.
Primary node: SQL108W2K8R23.
Availability group: AgGroupTest
Replica database: dbtest1
打開AvwaysOn High Availability ->Availability Groups->右鍵所需要的Availability Replicas->Properties.
會(huì)彈出下面的窗口,點(diǎn)擊左面的Backup Preference。
Backup Preference選項(xiàng)分別如下:
Prefer Secondary
優(yōu)先級高的secondary replica會(huì)被設(shè)定為Prefer replica ,如果所有的secondary replica優(yōu)先級相同,那么系統(tǒng)會(huì)隨機(jī)挑選一個(gè)作為Prefer replica.
如果高優(yōu)先級的secondary replica不可用,那么第二高的會(huì)被選擇為prefer replica,以此類推。
如果primary是唯一可用的replica,那么primary為成為prefer replica。
Secondary only
Primary replica永遠(yuǎn)不會(huì)成為prefer replica, 其余的和Prefer Secondary相同
Primary
只有Primary replica成為prefer replica。
Any Replica
優(yōu)先級高replica的成為replica
如果replica勾選了Exclude Replica,則該replica不會(huì)成為prefer replica
那么如何將backup preference應(yīng)用到我們的backup計(jì)劃中呢?下面是一個(gè)例子
在所有的replica中建立一個(gè)full backup作業(yè),該作業(yè)每天運(yùn)行一次,腳本如下
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中建立一個(gè)log backup作業(yè),該作業(yè)每天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
這個(gè)備份作業(yè)使用到了sys.fn_hadr_backup_is_preferred_replica函數(shù),該函數(shù)會(huì)根據(jù)backup preference的設(shè)定來判斷當(dāng)前節(jié)點(diǎn)是否為prefer replica,如果是,就進(jìn)行備份,否則退出。
該函數(shù)返回0和1,0代表NO,1代表 YES. 這樣就保證同一時(shí)刻只有一個(gè)replica可以進(jìn)行備份操作。
如果您使用Maintenance Plan來創(chuàng)建計(jì)劃,默認(rèn)情況下會(huì)自動(dòng)使用Backup preference.
最后是兩個(gè)關(guān)于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
新聞熱點(diǎn)
疑難解答
圖片精選