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

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介: SQL Server故障转移集群是建立在windows集群服务上的一种热备的高可用方案。在集群运行过程中,windows集群服务定期检测节点的资源健康状态,如果发生了故障,会根据预先定义的故障转移策略把SQL Server服务从故障节点切换到可用节点上,从而实现SQL Server的高可用。

什么是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与资源的关系:

clipboard

                      原图来自《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。

clipboard[1]

      相比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检测的间隔时间可以在“资源属性”的“高级策略”里面设置,一般采用默认即可,如需更改,可参考下图的位置设置。

clipboard[2]

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
4月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
6月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
143 13
|
6月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
6月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
78 6
|
6月前
|
SQL Oracle 关系型数据库
SQL CHECK 约束
【7月更文挑战第19天】SQL CHECK 约束。
50 5
|
6月前
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
488 1
|
6月前
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
434 3
|
5月前
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
557 0
|
6月前
|
SQL 存储 安全
数据库数据恢复—SQL Server数据库出现逻辑错误的数据恢复案例
SQL Server数据库数据恢复环境: 某品牌服务器存储中有两组raid5磁盘阵列。操作系统层面跑着SQL Server数据库,SQL Server数据库存放在D盘分区中。 SQL Server数据库故障: 存放SQL Server数据库的D盘分区容量不足,管理员在E盘中生成了一个.ndf的文件并且将数据库路径指向E盘继续使用。数据库继续运行一段时间后出现故障并报错,连接失效,SqlServer数据库无法附加查询。管理员多次尝试恢复数据库数据但是没有成功。
|
6月前
|
SQL 存储 关系型数据库
关系型数据库SQL Server学习
【7月更文挑战第4天】
91 2