SQL Server 2012故障转移的looksalive check和is alive check

什么是looksalive check和is alive check

      SQL Server故障转移集群是建立在windows集群服务上的一种热备的高可用方案。在集群运行过程中,windows集群服务定期检测节点的资源健康状态,如果发生了故障,会根据预先定义的故障转移策略把SQL Server服务从故障节点切换到可用节点上,从而实现SQL Server的高可用。

      而looksalive和isalive就是windows集群服务定期检测节点的资源健康状况的两个方法,它们存在于 resource dll中。

根据资源类型不同,resource dll可分为两个大类。对于集群IP、DNS名称、服务服务(SQL Server)、集群磁盘等windows自带的资源类型,resource dll就是windows集群自带的Resource DLL——“clusres.dll”中;而对那些自己的专属资源类型的资源,他们有专属的resource dll,如SQL Server和sql server agent的resource dll分别为sqlrvres.dll和sqlatres.dll。

    下图显示了集群里资源的类型及资源DLL与资源的关系:

                      原图来自《SQL Server 2012实施与管理实战指南》

 

 

looksalive check和is alive check检测原理

RHS.exe的进程(windows集群服务进程clussvc.exe生成的)通过调用定义了looksalive check和is alive check方法 resource dll来实现对资源的健康状态检测。

在SQL Server故障转移集群中,对于SQL Server资源,looksalive check和is alive check检测的原理如下:

looksalive是基本的健康状态检测,它通过服务控制管理器(SCM)来检查SQL Server服务在活跃点是否处于“启动状态”,默认每隔5秒检查一次。

isalive则通过windows集群服务去执行select @@servername(SQL Server 2012之前的版本)或sp_server_diagnostics(SQL Server 2012),然后根据返回的结果来判断SQL Server是否可用。它默认每隔60秒检查一次。

      select @@servername是SQL Server 2012之前的版本执行isalive方法的操作。执行的结果返回给故障转移集群,如果故障转移集群收到返回的结果,则说明此资源目前在正常状态。反之,则说明此资源目前已经发生故障。

       这种方法简单、“粗暴”,能够适应大多数场景,但如果此时SQL Server负载比较高,没有在60秒内响应,则可能发生误判,导致故障转移发生。为了解决这个问题,在SQL Server 2012及以后的版本上,微软改进了isalive检查方法,不再使用select @@servername,取而代之的是使用存储过程sp_server_diagnostics。

      相比select @@servername而言,sp_server_diagnostics返回的结果要详细得多(如上图)。SQL Server会利用内部算法来处理sp_server_diagnostics的结果,然后从多个维度来评估SQL Server的健康状况(系统、资源、查询、IO等),从而作为windows故障转移集群判断是否需要进行故障转移的依据。除此之外,SQL Server 2012还做了特别的优化:

    执行sp_server_diagnostics的线程使用抢占模式,且线程的OS优先级也高于普通线程;

sp_server_diagnostics每隔20秒执行一次,默认情况下如果3次(60秒)执行的结果都显示SQL Server资源处于故障状态,才发生故障转移

    说明:之所以是60秒,是因为“资源属性”的HealthCheckTimeout默认为60秒,可以人为改变大小,但一般保持默认即可。

 

配置looksalive check和isalive check

looksalive和isalive检测的间隔时间可以在“资源属性”的“高级策略”里面设置,一般采用默认即可,如需更改,可参考下图的位置设置。

时间: 2024-12-10 00:58:09

SQL Server 2012故障转移的looksalive check和is alive check的相关文章

如何创建SQL Server 2000故障转移群集

在创建SQL Server 2000 故障转移群集之前,必须配置 Microsoft 群集服务 (MSCS) 并使用 Microsoft Windows NT4.0 或 Windows 2000 中的群集管理员创建至少一个群集磁盘资源.在运行 SQL Server 安装程序之前,在群集管理员中记下群集驱动器的位置,因为创建新的故障转移群集需要该信息.只有SQL Server 2000 企业版才支持群集. 在创建SQL Server 2000 故障转移群集之前,必须配置 Microsoft 群集服

AlwaysOn可用性组功能测试(2)-SQL Server群集故障转移

三. SQL Server群集故障转移对AlwaysOn可用性组的影响 1. 主副本在SQL Server群集CLUSTEST03/CLUSTEST03上 1.1将节点转移Server02.以下是故障转移界面. 1.2 服务脱机,alwaysOn自然脱机,但侦听IP并没有脱机. 1.3 SQL服务联机后,侦听IP[10.0.0.224]会脱机重启,alwaysOn资源组联机 1.4 转移后恢复正常,连接正常,语句执行正常. 2. 主副本在SERVER03的服务上 2.1 当前主副本在SERVER

如何创建SQL Server 2000故障转移群集_MsSql

在创建SQL Server 2000 故障转移群集之前,必须配置 Microsoft 群集服务 (MSCS) 并使用 Microsoft Windows NT4.0 或 Windows 2000 中的群集管理员创建至少一个群集磁盘资源.在运行 SQL Server 安装程序之前,在群集管理员中记下群集驱动器的位置,因为创建新的故障转移群集需要该信息.只有SQL Server 2000 企业版才支持群集. 1. 在"Microsoft SQL Server 安装向导的"欢迎"屏

SQL SERVER 2012 从Enterprise Evaluation Edtion 升级到 Standard Edtion SP1

        案例背景: 公司从意大利购买了一套中控系统,前期我也没有参与其中(包括安装.实施都是第三方),直到最近项目负责人告诉我:前期谈判以为是数据库的License 费用包含在合同中,现在经过确认SQL Server 数据库的License需要我们这边提供.等我连接到该数据库服务器检查时,发现数据库版本为2012 Enterprise Evaluation Edition (64-bit),而公司现在只购买了2012 Standard Edition .那么我现在需要安装SQL SERV

SQL Server 2012:SQL Server体系结构——一个查询的生命周期(第3部分)(完结)

原文:SQL Server 2012:SQL Server体系结构--一个查询的生命周期(第3部分)(完结) 一个简单的更新查询 现在应该知道只读取数据的查询生命周期,下一步来认定当你需要更新数据时会发生什么.这个部分通过看一个简单的UPDATE查询,修改刚才例子里读取的数据,来回答. 庆幸的是,直到存取方法(Access Methods)前,更新操作和刚才SELECT语句流程是一模一样的. 这次存取方法(Access Methods)需要修改数据,因此在I/O请求传递前,修改的细节要存放于硬盘

基于Win2008 R2的WSFC实现 SQL Server 2012高可用性组(AlwaysOn Group)_win服务器

两年前的<SQL Server 2008 R2数据库镜像部署>,今天"再续前缘"-- 微软新一代数据库产品SQL Server 2012已经面世一段时间了,不管从功能上讲还是性能上的体现,较之其早期产品都有了很大提升.特别是其引入高可用性组(AlwaysOn Group, AG)这一概念和功能,大大增强和提高了SQL Server的可用性,在之前的镜像数据库的基础上有了质的变化.  SQL Server 2012高可用性组在实现过程中较之早起的SQL Server故障转移群

SQL Server 2012研发团队背后的故事

本文讲的是SQL Server 2012研发团队背后的故事,在切入正题之前,就让浸泡在数据海洋里的我们,看几个并不陌生的场景吧. 场景一:痛苦的升级 三十六岁的吴桐坡是一个电商网站的首席技术官,最近有点头疼:业务旺季就在眼前,现在的内存.盘阵.操作系统和应用平台已经有点扛不住.老板却已发话,今年要基于用户消费行为的统计与分析,上线更多的新品类.唉,又要和部门里的兄弟们熬夜了.好在之前做了不少准备工作,对这次升级的成本和问题心里大概有底."但过去几年,哪次硬件变更和软件升级没出过岔子?我怎么敢跟老

SQLServer · 最佳实践 · RDS for SQL Server 2012 权限限制的提升与改善

title: SQLServer · 最佳实践 · RDS for SQL Server 2012 权限限制的提升与改善 author: 石沫 背景 SQL Server 作为一种强大的关系型数据库,能够提供所有场景的应用.在绝大多数云计算公司中,都提供了SQL Server作为服务的云数据库服务,譬如阿里云.但既然是服务,那么服务就需要可管理,可控制,因此,在云计算初期,都对云数据库服务进行了严格的权限控制,好处就是可控可管理,但给用户会带来一些限制,某些限制实际上是可以再细粒度管控.因此,今

SQL Server 2012安装错误:Error while enabling Windows feature: NetFx3, Error Code: -2146498298

最近在安装SQL server 2012时,碰到错误:Error while enabling Windows feature: NetFx3, Error Code: -2146498298.原本以为Windows 2012配上SQL server 2012应该是一路顺畅才对啊.下面是这个问题的描述及解决方案.   1.安装环境 OS:Windows 2012 data center版本 SQL:SQL server 2012 Enterprise   2.故障描述   3.故障解决 经查,该