SQLSERVER群集故障转移笔记

出自《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依旧把他当成是安装在了一个
单机环境中,他无法具有故障转移的功能。
 
需要提一下的是Integration Services是一个比较特别的服务。Integration Services本身不是cluster-aware的服务
,但是用户可以通过一些步骤手动把他配置成一个群集资源。但是这样配置出来的Integration Services群集
资源不是一个真正的资源,是不具有自动故障转移功能的,因此微软并不推荐这麽做。
更多信息,参考
Configuring Integration Services in a Cluster
 
 
2.2.4 SQLSERVER群集的拓扑结构
最简单的SQLSERVER故障转移群集拓扑结构就是“活跃/非活跃 ”群集,这种结构
下群集有两个节点,用户在群集上安装一个SQLSERVER群集实例,该实例的“可能的所有者(Possible Owners)”
包含上述两个节点。这样任意时间只有一个节点上有SQLSERVER服务在运行,而另一个节点就是“非活跃”
节点。这种配置优点就是结构简单明了,无论SQLSERVER运行在哪个节点上都能获得同样的性能表现。
缺点是总有一个节点处于空闲状态,浪费了50%的硬件资源
 
另一种拓扑结构是活跃/活跃集群,还是以一个两节点的群集为例,这个时候用户在群集上安装两个SQLSERVER
群集实例,每个实例的“可能的所有者”都包含群集两个节点。在正常情况下,两个实例分别运行在不同的节点上,
这样两个节点就都是“活跃”节点
这种结构的优势是:两个节点的硬件资源都能被充分利用(需要安装两个或多个SQLSERVER群集实例),并且节约成本。
缺点是:一旦某个节点发生故障转移,就会发生另一个节点上同时运行了两个SQLSERVER实例的情况。此时,这两个
实例可能会争用这个节点上的CPU、内存、I/O等资源,导致两个实例的性能都受到影响。有时可能两边的用户都不能
接受。因此要尽快解决异常节点上的问题,尽早把发生故障转移的实例切换回去
 
在此基础上,我们来介绍所谓的N+1结构,即N个活跃节点加上一个非活跃节点,以3个节点的群集为例
在上面安装两个SQLSERVER群集实例,每个实例的Possible Owner包含群集中的两个节点,但是只有
一个节点是两个实例共有的。正常情况下,两个SQLSERVER都运行在非共有的那个节点上,互不相干
。一旦某个节点发生故障转移,就会切换到那个共有的非活跃节点上
这个结构是一个介于“活跃/非活跃”和“活跃/活跃”之间的一种方案。相对于“活跃/非活跃”,
他浪费的节点资源比较少(1/N+1)。另外,两个以上的节点同时发生故障转移,需要同时切换到
共有节点的概率是比较低的,因此也在一定程度上解决了“活跃/活跃”结构的性能问题
 
无论什么样的拓扑结构,有两点是不会变的:
1、SQLSERVER集群无法提供数据库端的负载均衡功能。作为“活跃/活跃”群集,其实是几个
独立的数据库实例,他们彼此间没有联系。再次强调,群集技术只是一个提供“高可用性”的技术
,而不是提升性能的技术
 
 
2、无论群集有几个节点,对于某个数据库实例而言他只有一份数据一旦数据本身出现问题,群集
对此便无能为力。所以,群集技术不是一个提供数据“灾难恢复”的技术。对重要的数据库,仅仅使用群集技术是不够的
 
2.2.5 SQL2012对故障转移群集的改进
SQLSERVER2012群集基本沿袭了SQLSERVER2008群集以来的一系列特点。不过他也带来了一些新特性
使得群集具有了更加强大的功能以及更高的可用性。
新特性介绍
1、多子网群集的支持
2、RegisterAllProvidersIP
3、存放数据库的物理位置
4、新的Resource DLL
5、Sp_server_diagnostics
 

SQLSERVER群集故障转移笔记的更多相关文章

  1. AlwaysOn可用性组功能测试(二)--SQL Server群集故障转移对AlwaysOn可用性组的影响

    三. SQL Server群集故障转移对AlwaysOn可用性组的影响 1. 主副本在SQL Server群集CLUSTEST03/CLUSTEST03上 1.1将节点转移Server02.以下是故障 ...

  2. 基于iSCSI的SQL Server 2012群集测试(四)--模拟群集故障转移

    6.模拟群集故障转移 6.1 模拟手动故障转移(1+1) 模拟手动故障转移的目的有以下几点: 测试群集是否能正常故障转移 测试修改端口是否能同步到备节点 测试禁用full-text和Browser服务 ...

  3. Sqlserver实现故障转移 — sqlserver镜像备份实现故障转移(3)

    目的:在已经加域的计算机上安装sqlserver2012,并配置数据库镜像实时同步,并实现故障转移. 在数据库层面实现故障自动转移后,应用程序里改怎么写数据库连接呢?其实使用ADO.NET或者SQL ...

  4. Sqlserver实现故障转移 — 域控(1)

    一  .实现目的:实现两台sqlserver数据库服务器的实时备份及故障转移:即:其中一台数据库服务器宕机后,应用程序可自动连接到另一台数据库服务器继续运行. 二.域控:域控制器是指在“域”模式下,至 ...

  5. Sqlserver实现故障转移 — AlwaysOn实现故障转移(4)

    目的:在已经加域的计算机上安装sqlserver2012,并配置系统级故障转移及数据库,实现AlwayOn. 域控的建立详见:https://www.cnblogs.com/xiaoerlang90/ ...

  6. Sqlserver实现故障转移 — 加域(2)

    目的:将计算机添加到域中, 域控的建立详见:https://www.cnblogs.com/xiaoerlang90/p/9224745.html 域控: 名称:dcTest.com IP: 192. ...

  7. SQLServer 2012异常问题(一)--故障转移群集+镜像环境导致作业执行失败

    原文:SQLServer 2012异常问题(一)--故障转移群集+镜像环境导致作业执行失败 先感谢一下我的同事们最先发现此问题,鸣谢:向飞.志刚.海云 最近在生产环境发现一个诡异的问题: 环境:WIN ...

  8. 搭建Windows故障转移群集

    标签:SQL SERVER/MSSQL SERVER/数据库/DBA/windows 概述 本章内容主要讲述搭建windows故障转移群集 环境: 域服务器:windows server 2008 R ...

  9. Hyper-V 2012 R2 故障转移群集

    和终端用户相比,企业用户对于业务的连续性和可靠性更为在意.相对而言,企业一般不会将追逐单一硬件的性能排在第一位. 如何衡量业务是否持续可用,一般使用"x 个 9"这种方式来定义.如 ...

随机推荐

  1. Chapter 2 Open Book——26

    "Oh." He let it drop. I looked away awkwardly. 哦,他让它走了.我笨拙的看向别处. “哦.”他不再纠缠于这个问题.我笨拙地移开视线. ...

  2. AJAX(Jquery)

    一)jQuery常用AJAX-API 目的:简化客户端与服务端进行局部刷新的异步通讯 (1)取得服务端当前时间 简单形式:jQuery对象.load(url) 返回结果自动添加到jQuery对象代表的 ...

  3. Linux下自动清理超过指定大小文件的方法

    由于线上业务用的squid,根据经验值如果长时间运行则缓存目录下的swap.state会慢慢变大,一旦超过60M,squid的性能就会急剧下降,因此需要定时去清理大于60M的swap.state文件. ...

  4. mysql索引总结(2)-MySQL聚簇索引和非聚簇索引

    mysql索引总结(1)-mysql 索引类型以及创建 mysql索引总结(2)-MySQL聚簇索引和非聚簇索引 mysql索引总结(3)-MySQL聚簇索引和非聚簇索引 mysql索引总结(4)-M ...

  5. git第二节----git clone与git tag

    @git 远程克隆(clone)仓库,将远程工程clone到本地仓库:默认克隆远程master 分支 git clone  https://github.com/kaokaozhu/Test.git ...

  6. SpringMVC源码阅读:属性编辑器、数据绑定

    1.前言 SpringMVC是目前J2EE平台的主流Web框架,不熟悉的园友可以看SpringMVC源码阅读入门,它交代了SpringMVC的基础知识和源码阅读的技巧 本文将通过源码(基于Spring ...

  7. core Animation之CATransition(转场动画)

    用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果.iOS比Mac OS X的转场动画效果少一点 UINavigationController就是通过CATransition实现了将控制器的视图 ...

  8. JS DOM 操作 项目总结 【超链接】【数列】【span】

      超链接   每次定义链接样式时务必确认定义的顺序,link--visited--hover-active,也就是我们常说到的LoVe HAte原则(大写字母就是它们的首字母). “爱恨原则”(Lo ...

  9. windows下mongodb集群搭建

    本文介绍在windows环境下如何搭建一个高可用性的mongodb集群.系统环境为win7,mongodb版本为3.6.3. 本文采用的是分片+副本集的方式搭建集群,将分别介绍如何使用副本集和分片来提 ...

  10. Java虚拟机--线程安全和锁优化

    Java虚拟机--线程安全和锁优化 线程安全 线程安全:当多线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象 ...