SQL Server Alwayson可用性副本会话期间的可能故障

200 ? "200px" : this.width)!important;}
-->

介绍

物理故障、操作系统故障或 SQL Server 故障都可能导致两个可用性副本之间的会话失败。 可用性副本不会定期检查 Sqlservr.exe 所依赖的组件来验证这些组件是在正常运行还是已出现故障。 但对于某些类型的故障,受影响的组件将向 Sqlservr.exe 报告错误。 由另一个组件报告的错误称为“硬错误 ”。 为了检测可能忽略的其他故障,Always On 可用性组实施了自己的会话超时机制。 以秒为单位指定会话超时期限。 此超时期限是一个服务器实例在考虑断开另一实例的连接之前,等待接收来自该实例的 PING 消息的最长时间。 两个可用性副本之间发生会话超时时,可用性副本将假定已发生故障并声明一个“软错误”。

硬错误导致的故障

可能的硬错误原因包括(但不限于)下列几种情况:

  • 连接或网线断开
  • 网卡出现故障
  • 路由器更改
  • 防火墙更改
  • 端点重新配置
  • 事务日志驻留的驱动器丢失
  • 操作系统或进程故障

例如,如果主数据库中的日志驱动器停止响应或失败,操作系统会通知 Sqlservr.exe 出现严重错误。

某些组件(如网络组件和某些 IO 子系统)使用它们自己的超时设置来确定故障。 这些超时设置独立于 Always On 可用性组,后者不了解它们,并且完全不能识别其行为。 在这些情况下,超时延迟会延长发生故障与可用性副本收到所引发硬错误之间的时间。

软错误导致的故障

可能导致会话超时的情况包括(但不限于)下列各项:

  • 诸如 TCP 链接超时、数据包被删除或损坏或数据包顺序错误等网络错误。
  • 操作系统、服务器或数据库处于挂起状态。
  • Windows 服务器超时。
  • 计算资源不足,例如 CPU 或磁盘超负荷运转,事务日志填满,或系统用完内存或线程。 在这些情况下,需要增加超时期限、降低工作负荷或更换硬件以处理相应的工作负荷。

回话超时机制

由于软错误不能由服务器实例直接检测到,因此,软错误可能导致一个可用性副本无限期等待会话中另一个可用性副本的响应。 为了防止发生这种情况, Always On 可用性组实施了会话超时机制,此机制基于以下条件:所连接的可用性副本会在每个打开的连接上按固定间隔发送 ping。 在超时期限内收到 ping 指示连接仍是开放的且服务器实例正在通过此连接进行通信。 收到 ping后副本将重置此连接上的超时计数器。主副本和辅助副本相互 ping 以指示它们仍处于活动状态, 会话超时限制是用户可配置的副本属性,默认值为 10 秒。

如果在会话超时期限内没有收到来自另一个副本的ping,该连接将超时、连接将关闭;超时的副本进入 DISCONNECTED 状态。 即使为同步提交模式的副本,事务也将不等待该副本重新连接暂时将该辅助副本切换到异步提交模式。在该辅助副本重新与主副本连接后,它们将恢复同步提交模式。

参考:https://msdn.microsoft.com/zh-cn/library/ff877884(v=sql.120).aspx

总结

无法检测到主数据库之外的数据库中的故障。 此外,也不太可能检测到数据磁盘故障,除非数据库因为数据磁盘故障而重新启动,仅在出现软错误时,才对可用性副本执行有效的错误检查。


备注:

作者:pursuer.chen

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

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

《欢迎交流讨论》

时间: 2024-10-12 11:11:38

SQL Server Alwayson可用性副本会话期间的可能故障的相关文章

翻译:到AlwaysOn级别1的楼梯:什么是“SQL Server AlwaysOn”?

到AlwaysOn级别1的楼梯:什么是"SQL Server AlwaysOn"?佩里·惠特尔,2016/02/24(首次出版:2014 /09/24)该系列这篇文章是楼梯系列的一部分:通往AlwaysOn的楼梯AlwaysOn是一套复杂的技术,经常被误解.在这个阶梯中,您将了解AlwaysOn技术,它们如何适应高可用性堆栈,以及如何充分利用它们.欢迎来到"SQL Server AlwaysOn"系列的第一个级别.在这一级别的文章中,我们将发现技术"Alw

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

本文属于管理SQL Server AlwaysOn 系列文章 前言: 前面几节提到了如何对AlwaysOn做常规管理,这一节和接下来的一节专门对"监控"进行解释和演示.管理和监控这两个词在很多时候是混淆的,但是我们大概也可以区分出来,比如我做备份,算管理,对错误.异常进行响应这也是管理,但是对错误.异常的捕获和通知DBA这就是监控了,而且监控有时候是不需要进行干预的,比如我监控磁盘空间,当空间充足的时候,我可以不管. 在日常的DBA工作中,我本人对监控的重视程度远大于所谓的管理,因为有

翻译(十五)-----通往1级楼梯:什么是“SQL Server AlwaysOn”

通往1级楼梯:什么是“SQL Server AlwaysOn” Perry Whittle,2016 / 02 / 24(首次公布:2014 / 09 / 24) 该系列 本文是系列的一部分:楼梯楼梯AlwaysOn AlwaysOn是一套复杂的技术,常被误解.在这楼梯你将学到的AlwaysOn技术,他们如何适应高可用的堆栈,如何利用好他们. 欢迎来到第一级阶梯”系列中的SQL Server AlwaysOn”.在这1级的文章,我们会发现技术“在”.“虚拟服务器”(FCI)和“Windows服务

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

本文属于管理SQL Server AlwaysOn系列文章 前言: 前面系列已经介绍了SQL Server AlwaysOn的知识点.安装演示及注意事项等.但是这并不是终点,更多的反而是起点.就像不能生了孩子就不管,你还得养(管理).作为DBA,更多的工作内容恰恰就是管理AlwaysOn.所以这里单独列出一个系列介绍SQL Server AlwaysOn的管理.本系列沿用从0开始部署基础的AlwaysOn 的环境. 在这个系列中,准备讲述以下内容: 管理SQL Server AlwaysOn(1

从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)

从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html 第二篇http://www.cnblogs.com/lyhabc/p/4682028.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第二篇,主要讲述如何搭建故障转移集群,因为AlwaysOn是基于Windows的故障转移集群的 在讲解步骤之前需要了解一下故障转移集群仲裁配置 下面图片来自<Wind

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

原文地址: http://www.cnblogs.com/lyhabc/p/4682986.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第三篇,这一篇才真正开始搭建AlwaysOn,前两篇是为搭建AlwaysOn 做准备的 步骤 这一篇依然使用step by step的方式介绍怎麽搭建AlwaysOn 请先使用本地用户Administrator登录这两个集群节点并执行下面的操作,先不要用域用户DCADMIN登录 1.两个集群节点都需先安装.NET Framework

(转)从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)

原文地址:  http://www.cnblogs.com/lyhabc/p/4682028.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第二篇,主要讲述如何搭建故障转移集群,因为AlwaysOn是基于Windows的故障转移集群的 在讲解步骤之前需要了解一下故障转移集群仲裁配置 下面图片来自<Windows Server2012系统配置指南> 四种集群的仲裁配置: 1.多数节点:这种配置不会用到仲裁磁盘,而所谓多数节点就是在正常节点数量占多数的情况下,集群才会提供

SQL Server AlwaysOn

标签:SQL SERVER/MSSQL SERVER/数据库/DBA/高性能解决方案 概述 环境: 域服务器:windows server 2008 R2 SP1,192.168.2.10 DNS:192.168.2.10 CLU11, windows server 2008 R2 SP1 ,192.168.2.11,SQL Server 2012 Enterprise (64-bit) CLU12, windows server 2008 R2 SP1 ,192.168.2.12,SQL Se

SQL Server AlwaysON 同步模式的疑似陷阱

SQL Server 2012 推出的最重要的功能之一Alwayson,是一个集之前Cluster和Mirror于一体的新功能,即解决了Cluster依赖共享存储的问题,又解决了镜像不能实时读以及转移后连接串需要添加转移IP的问题,看起来的确很实用. 而且Alwayson多副本的功能为实现读写分离提供了可能,试想一下,当主副本压力比较大的时候,是否可以将读操作引向辅助副本呢?答案一般来讲是肯定的,请注意,是一般! Alwayson有两个同步模式,同步和异步,即然是同步,理所当然的我认为他是实时的