本篇文章主要介绍了"SQLSERVER群集故障转移笔记",主要涉及到sqlserver,提升性能方面的内容,对于SqlServer感兴趣的同学可以参考一下:
出自《sqlserver2012实施与管理实战指南》sqlserver故障转移 P41事实上,从sqlserver2000到sqlserver2008 R2,s...
出自《sqlserver2012实施与管理实战指南》
sqlserver故障转移 P41
事实上,从sqlserver2000到sqlserver2008 R2,sqsrvres.dll中定义的looksalive和isalive方法都是类似的。
具体来讲:
looksalive:通过服务器控制管理器(service control manager,SCM)来检查sqlserver服务在活跃节点
是否处于“启动状态”。根据sqlserver资源的Advanced Polices选项卡中的设置,这个检查默认是
每5秒做一次
isalive:根据sqlserver资源的Advanced Polices选项卡中的设置,这个检查默认是60秒做一次
也就是说每12次Looksalive检查就会伴随一个Isalive检查。sqlserver需要Isalive检查是因为即使
sqlserver服务是正在运行状态也不能说明sqlserver就可以良好地响应应用程序的请求。有时候
可能整个sqlserver已经挂起了,但是服务的状态还是“启动”,所以需要Isalive Check来进一步
检查sqlserver的状态。此外,一旦lookalive检查的结果失败,Windows群集服务就会立刻触发
Isalive检查
在SQL2012之前,Isalive所做的事情很简单,Windows群集服务会使用TCP/IP或者命名管道来连接
sqlserver群集实例。连接上之后,运行一句命令:“select @@servername”。如果成功返回结果
那么Isalive检查就成功了。从第一次成功执行select @@servername开始,Isalive检查就会根据设定
的时间间隔,使用这个连接不断地重复检查工作
如果连接不上sqlserver群集实例或者语句运行失败,那么Isalive检查失败。此时Windows群集会
再做3~5次(Windows的版本和设置不同)Isalive检查。如果这些检查都失败,就要根据Policies选项卡
中的设置开始进行故障转移
你可以把故障转移简单地想象成sqlserver服务的重启,所不同的是故障转移的时候,sqlserver服务是在
当前节点停止的,然后在另一个节点上启动起来。因此故障转移所花费的时间和sqlserver服务重启的时间
是差不多的。当然共享磁盘和虚拟网络名等资源在另一个节点上线也会额外花费一点时间,不过在大多数
情况下这部分时间是比较短的。另外由于故障转移一般是意外发生的,所以你要预期sqlserver切换到
新节点以后,还需要一段时间来做数据库的修复
前面也提到过,除了sqlserver和sqlserver AGENT以外,sqlserver资源组里可能还会有Analysis Service
资源。但是和sqlserver和sqlserver AGENT所不同的是,Analysis Service资源没有自己的资源类型,
也就是说他是一个GENERIC SERVICE(通用服务)。Analysis Service的isalive和lookalive检查就使用的是
clusres.dll中定义的通用服务检查方法。
sqlserver的诸多组件和服务中,sqlserver 、sqlserver AGNET、ANALYSIS SERVICE三个服务
无论是有自己专属的资源类型还是通用服务,都是被设计为可以通过resource dll形成群集资源。
这种类型的服务被称为cluster-aware。sqlserver还有很多其他资源,比如:SQL broswer、Reporting Service
等,他们被设计为无法通过任何resource dll在Windows群集中形成资源,所以他们不是cluster-aware的。
对于不是cluster-aware的服务,即使被安装在了群集的节点上,Windows依旧把他当成是安装在了一个