AlwaysOn--Backup Preference
AlwaysOn group的一个新特性是允许在secondary replica进行backup,将backup的负载从primary replica上移除去。
并且提供了Backup preference选项,用于在AlwaysOn Availability Group环境下对备份进行管理。需要强调的是,Backup Preferences并没有强制作用,设定之后,依然可以在任意一个replica上进行备份。
下面用一个例子解释如何使用Backup preference
环境
===
Secondary node: SQL108W2K8R21.
Secondary node: SQL108W2K8R22.
.
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' //alwayson不支持在seconday做full dbbackup
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
AlwaysOn--Backup Preference的更多相关文章
- 跟踪数据库中执行时间超过1.5秒的语句及SP,导入数据库
跟踪 --============================================================================ --新建两个目录 D:\InOut\ ...
- 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)
从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://w ...
- 如何在没有域的环境中搭建AlwaysOn(二)
对DBA而言,不需要域就可以搭建SQL Server AlwaysOn是Windows Server 2016中最令人兴奋的功能了,它不仅可以降低搭建的成本,而且还减少了部署和运维的工作量. 上篇博客 ...
- 如何迁移Alwayson AG
Windows cluster要求同一个cluster中的所有windows版本都是相同的,这样就出现一个问题,当我们要将对windows进行升级时,(例如从windows 2008 R2升级到win ...
- AlwaysOn可用性组测试环境安装与配置(二)--AlwaysOn配置(界面与T-SQL)
四.AlwaysOn配置 1.开启AlwaysOn高可用性功能. 1.1.开启Server01的可用性组 1.2.需要重启服务:属于SQL server群集节点的服务,需要通过故障转移界面重启 1.3 ...
- AlwaysOn可用组基础知识
AlwaysOn可用组概念 AlwaysOn作为SQL Server2012新功能,其目的主要为了替代镜像功能. AlwaysOn拥有镜像的同步和异地容灾功能,并能在镜像的基础上实现一对多的镜像副本同 ...
- SQLSERVER 2012之AlwaysOn -- 一次硬件升级引发的问题
这是上周遇到的一个案例:对已有的硬件进行升级而引发的问题,期间还触发了一个比较严重的BUG,可谓多灾多难:不过值得庆幸的是,在一连串连锁问题出现的时候,并没有出现人工操作失误(这往往是在处理故障中风险 ...
- Alwayson+Replication
本文将介绍如何实现Alwayson + Replication ,通过AlwaysOn实现Publication database的高可用性,使Publication database在failove ...
- 【转】SQL Server 2012 配置AlwaysOn(三)
转载自:http://www.cnblogs.com/lyhabc/p/4682986.html 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http:/ ...
随机推荐
- Android中将xml布局文件转化为View树的过程分析(下)-- LayoutInflater源码分析
在Android开发中为了inflate一个布局文件,大体有2种方式,如下所示: // 1. get a instance of LayoutInflater, then do whatever yo ...
- 记一次eclipse无法启动的排查过程
起因是本地为开发工程打包,总是提示 source 1.3 不支持注释.enum等等,但询问开发开发表示自己本地打包正常. 于是排查版本问题.开发的jdk是1.6版本,自己的是1.7,于是想要不降级吧, ...
- 2.4 CMMI2级——需求管理(Requirements Management)
人是会死的,需求是会变的.相信大家都经历了很多需求变更的痛苦,项目被拖延,成本高涨,十有七八是需求管理没有做好导致的.有哪一些需求管理方面的常见问题呢,这里列举一下: 1.因为项目进度赶等原因,在很多 ...
- 组内Linq培训记录
注: 由于该培训是在组内分享,先写成了Word,而word中的代码都以截图方式呈现了,而在博客园不能很方便的粘贴截图进来,所以我用插入代码的方式加进来,如果文中说“如下图”或“如下图代码”,那么就直接 ...
- MySQL客户端工具 SQLyog
我最喜欢它的History功能,把执行过的操作对应语句都输出出来,一些麻烦的语句用GUI操作后,还能保存对应的sql语句.不错! 官网:http://www.webyog.com 下面是官方的介绍:S ...
- CentOS系统启动流程你懂否
一.Linux内核的组成 相关概念: Linux系统的组成部分:内核+根文件系统 内核:进程管理.内存管理.网络协议栈.文件系统.驱动程序. IPC(Inter-Process Communicati ...
- 欲哭无泪的@Autowired注入对象为NULL
欲哭无泪啊...一下午的时间就这么被浪费了...一个基于spring mvc和spring data jpa的小项目,当我写完一个controller的测试用例后,一运行却报空指针,跟了下是一个dao ...
- C++类成员函数的重载、覆盖和隐藏区别?
C++类成员函数的重载.覆盖和隐藏区别? a.成员函数被重载的特征:(1)相同的范围(在同一个类中):(2)函数名字相同:(3)参数不同:(4)virtual 关键字可有可无.b.覆盖是指派生类函数覆 ...
- 13款经典BI项目报表&界面风格设计方案
说明 1.方案取自报表开发工具FineReport案例的配色方案 2.所有设计方案图中已标注了字体.颜色与间隔距离等,可直接调用. 报表&界面风格设计方案展示 灰蓝界面 绿色与金色 蓝绿清新风 ...
- git错误:Target branch can't be blank
一.问题描述 遇到一个问题:Target branch can't be blank 因为问题再没有重现,所以拿一张网上的图: 情况是,比如a是项目的owner,有一个项目a/Project. b从a ...