介绍

Always On 可用性组活动辅助功能包括支持在辅助副本上执行备份操作。 备份操作可能会给 I/O 和 CPU 带来很大的压力(使用备份压缩)。 将备份负荷转移到已同步或正在同步的辅助副本后,您可以使用承载第一层工作负荷的主副本的服务器实例上的资源,您可以创建主数据库的任何类型的备份。 也可以创建辅助数据库的日志备份和仅复制完整备份。

一、概念

1.辅助副本上支持的备份类型

  • BACKUP DATABASE :在辅助副仅支持数据库、文件或文件组的仅复制完整备份。 请注意,仅复制备份不影响日志链,也不清除差异位图。
  • 辅助副本不支持差异备份。
  • BACKUP LOG 仅支持常规日志备份(辅助副本上的日志备份不支持 COPY_ONLY 选项)。
  • 若要备份辅助数据库,辅助副本必须能够与主副本进行通信,并且状态必须为 SYNCHRONIZED 或 SYNCHRONIZING。

2.配置运行备份作业的位置

在辅助副本上执行备份以减轻主生产服务器的备份工作负荷非常有好处。 但是,对辅助副本执行备份会显著增加用于确定应在何处运行备份作业的过程的复杂性。 要解决这个问题,请按如下所示配置备份作业运行的位置:

  • 配置可用性组以便指定要对其执行备份的可用性副本。
  • 为承载作为执行备份候选的可用性副本的每个服务器实例上的每个可用性数据库都创建编写了脚本的备份作业。

3.备份首选项

优先辅助副本
指定备份应在辅助副本上发生,但在主副本是唯一联机的副本时除外。 在该情况下,备份应在主副本上发生。 这是默认选项。

仅辅助副本
指定备份应该永远不会在主副本上执行。 如果主副本是唯一的联机副本,则备份应不会发生。

主副本
指定备份应该始终在主副本上发生。 如果您需要在对辅助副本运行备份时存在不支持的备份功能,例如创建差异备份,此选项将很有用。

任意副本
指定您希望在选择要执行备份的副本时备份作业将忽略可用性副本的角色。请注意,备份作业可能评估其他因素,例如每个可用性副本的备份优先级及其操作状态和已连接状态。

注意:如果您计划使用日志传送为可用性组准备任何辅助数据库,请将自动备份首选项设置为Primary,直到准备好所有辅助数据库并将其加入可用性组。没有强制的自动备份首选项设置。 对此首选项的解释取决于您为给定可用性组中的数据库撰写备份作业脚本的逻辑(如果有)。 自动备份首选项设置对即席备份没有影响。

二、判断语句

若要为某一给定可用性组考虑使用自动备份首选项,则对于承载备份优先级大于零 (>0) 的可用性副本的每个服务器实例,您需要为该可用性组中的数据库的备份作业编写脚本。若要确定当前副本是否为首选备份副本,请在备份脚本中使用 sys.fn_hadr_backup_is_preferred_replica 函数。如果当前实例上的数据库位于首选副本上,则返回 1否则返回 0。 通过对查询此函数的每个可用性副本运行判断脚本,可以确定哪个副本应运行给定的备份作业。

If sys.fn_hadr_backup_is_preferred_replica(@dbname)=1
BEGIN
BACKUP DATABASE @DBNAME TO DISK=<disk>
END
ELSE
PRINT('当前副本不是备份首选副本')

在所有可能执行的备份的副本上面创建相同的备份语句,在发生故障转移时,无需修改任何脚本或作业

三、创建代理作业 

注意:

1.这里的数据库要选择“master”,如果当前的alwayson配置了只读路由而你这里选择的是可用性数据库的话那么在辅助副本上面创建的作业会执行失败,因为只读路由连接辅助副本可用性数据库需要readonly连接属性。创建非备份的其它作业也是一样。

2.当前我的备份脚本放在master数据库中,如果是执行其它数据库下的脚本也是一样,这里需要将数据库名带上。

3. 如果if判断这里指定的是一个非可用性组的数据库返回的结果同样是1,因为对于实例来说非可用性的数据库也是备份的首先副本。

4.如果begin end中执行的是存储过程,不能在执行存储过程语句之前做可能涉及修改的其它相关操作比如:

1.选择数据库(use database);

2.定义变量(declare @id);

3.set赋值

4.其它的相关操作。

判断是否是主副本命令

If sys.fn_hadr_is_primary_replica (@dbname) =1
BEGIN  PRINT('1')
END
ELSEPRINT('当前副本不是主副本')

备注:判断是否是主副本命令和判断是否是备份主副本命令不一样,如果指定的数据库是非可用性组数据库判断是否是主副本返回的结果是NULL,而判断是否是备份主副本返回的是1。

总结

1.在可用性组的主数据库或辅助数据库上不允许 RESTORE 语句。

2.备份首选项只是给出一个备份的判断选项,无论你手动在哪个副本上备份都可以,唯一的限制就是辅助副本的完整备份只支持“复制”备份。由于辅助副本只支持仅复制备份,所以辅助副本无法进行差异备份。要进行差异备份那么首先备份副本应该选择主副本。

3.无论是在主副本上备份日志还是在辅助副本上备份日志最终都会截断所有副本上的日志链。

备注:

作者:pursuer.chen

博客:http://www.cnblogs.com/chenmh

本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。

《欢迎交流讨论》

转载于:https://www.cnblogs.com/chenmh/p/6971992.html

SQL Server Alwayson创建代理作业注意事项相关推荐

  1. SQL Server 中查看代理作业记录日志的方法有哪些?

    查看代理作业记录日志 Microsoft SQL Server Management Studio Transact-SQL SQL Server 管理对象 在实际应用中,我们可以通过 Microso ...

  2. 管理SQL Server AlwaysOn(1)——基础维护

    本文属于管理SQL Server AlwaysOn 系列文章 前言: 前面系列已经介绍了SQL Server AlwaysOn的知识点.安装演示及注意事项等.但是这并不是终点,更多的反而是起点.就像不 ...

  3. 使用 SQL Server Mobile 创建移动应用程序

    使用 SQL Server Mobile 创建移动应用程序  在此演练中,您将学习如何在使用 SQL Server 2005 Mobile Edition (SQL Server Mobile) 的 ...

  4. 管理SQL Server AlwaysOn(5)——常规监控(1)——常规监控

    本文属于管理SQL Server AlwaysOn 系列文章 前言: 前面几节提到了如何对AlwaysOn做常规管理,这一节和接下来的一节专门对"监控"进行解释和演示.管理和监控这 ...

  5. SQL Server AlwaysON从入门到进阶(1)——何为AlwaysON?

    本文属于SQL Server AlwaysON从入门到进阶系列文章 本文原文出自Stairway to AlwaysOn系列文章.根据工作需要在学习过程中顺带翻译以供参考.系列文章包含: SQL Se ...

  6. SQL Server AlwaysOn读写分离配置

    SQL Server AlwaysOn读写分离配置 pursuer.chen 备注: 作者:pursuer.chen 博客:http://www.cnblogs.com/chenmh 本站点所有随笔都 ...

  7. SQLserver创建代理作业

    SQL Server创建代理作业 最近在做一个关于相似航班处理的项目,大概的步骤就是机场塔台的雷达负责接收航班信息,然后我通过UDP协议抓取数据包,分析数据包的格式解码每个字段的信息,最后将解码后的信 ...

  8. 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

    从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇 http://www.cnblogs.com/lyhabc/p/4678330.html 第二篇 http: ...

  9. (转) 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

    原文地址: http://www.cnblogs.com/lyhabc/p/4682986.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第三篇,这一篇才真正开始搭建Alwa ...

最新文章

  1. java8 lambda 排序算法,Java8中排序算法比较器的三种写法(使用lambda表达式实现Comparator比较器)...
  2. Ubuntu常用基础命令
  3. MP4 info查看moov头位置
  4. Emlog文章特色图生成插件分享
  5. Activiti工作流(三)——流程变量
  6. uwsgi03----直接部署
  7. js 格式化 java时间格式化_用JavaScript(js)对时间格式化
  8. idea 导入到码云
  9. python做oa系统_浅谈python进行webapp,oa系统开发 (更新中) | 学步园
  10. ArcGIS Server服务介绍与服务在js中的使用
  11. 入职 6 个月,被裁员。。。
  12. 传智播客java基础入门pdf
  13. 转载:PAL/NTSC/BT601/BT656/BT1120基本概念
  14. [Render] Unity SRP 概述:可编写脚本的渲染管道
  15. 基于java的小型超市管理系统系统(含源文件)
  16. dvhop三边测量法MATLAB,基于非测距的DV-Hop定位算法改进
  17. 使用mybatisplus中的selectone方法,查询一条信息。报错
  18. ckplayer在线播放流媒体
  19. python的dispatch_win32com.client.Dispatch()函数用法
  20. PR值是什么?pr值的意义

热门文章

  1. Python《多线程并发爬虫》
  2. 【图像处理】libtiff读写三维TIFF图像(附详细代码)
  3. leetcode —— 1038. 从二叉搜索树到更大和树
  4. 面试题 08.02. 迷路的机器人
  5. 超松弛迭代法(C语言实现)
  6. oracle 结果集比较,Oracle 结果集之间的问题(积并交叉)
  7. 【中级】 微信小程序 - 腾讯云 - wafer2 - PHP - 实战 - 后台 - 数据库的访问 - 01 - 通过wx.request或者qcloud.request来获取数据库数据
  8. 【编撰】linux IPC 002 - 匿名管道PIPE和有名管道FIFO的概念和实例,以及应用比较
  9. linux io100的原因_Unix与Linux的区别与联系
  10. php mysql 复制数据库表结构图_MySQL_Mysql复制表结构、表数据的方法,本文给大家分享了好几种复制 - phpStudy...