了解群集环境下的数据库高级属性

【介绍】

在群集环境下,数据库资源有一些属性。深入了解数据库资源的属性,对于我们更好的管理群集下的数据库,有很大的帮助。我们这里介绍一个公共的属性和特有的属性。并且试验这些属性。这里以Windows 2003 群集环境为例。 

bb

 

【是否Restart

这个属性设定是,当数据库资源Failed的时候,是否会去尝试重新启动。在群集环境下,这个属性要设为Restart。这样,当资源失败的时候,它会尝试去重启或迁移到另外一个组。

 

测试 => 当我们选择 “Do not restart”,右键点击SQL Server资源,并选择”Initiate Failure”,那么该SQL Server资源会直接Fail。这样就失去了群集的意义了。所以这个选项我们要选择”Restart”

 

【影响组 

这个属性设定是,当SQL Server (MYINSTANCE)资源出现错误的时候,是否会影响到整个组。因为Failover是针对整个组而言,所以如果不会影响组的话,则该资源还是无法Failover到另外一个组。

 

测试 =>

我们在 ”Affect the group” 上不打勾。 然后在任务管理器里,把 SQL Server 的进程杀掉。 我们会观察到,该资源会一直处于 Fail 的状态。 现在我们把 ”Affect the group” 打勾,那么做同样的操作时,首先 SQL
Server (MYINSTANCE)
fail ,接着,整个组里的所有其他资源会受到影响,全部 Offline,
然后 Failover 到另外一个节点上,在另外一个节点上,资源能够正常上线。

 

ThresholdPeriod

这两个属性的缺省值为3900,也就是说,在900秒,也就是如果某资源失败,则会在15分钟内,去本节点上尝试重新ONLINE三次。三次不成功,则失败(如果没有选择Affect the group)或开始做FAILOVER(如果选择了Affect the group)

 

测试 =>

为简单起见,我们把该值改为 10 秒内 3 次。以方便重现问题 ”Affect the group” 上不打勾。 SQL Server (MYINSTANCE) 资源 Offline 到共享磁盘上,把 master.mdf 改名为 master.mdf.bak 这时候,我们尝试去 Online SQL Server (MYINSTANCE) ,第一次会失败,因为找不到 master.mdf,
接着群集会在该结点上再尝试三次,发现还是不能 ONLINE ,这时候,该资源会一直处于失败状态。 我们把该值改为 1 秒内 3 次。在这种设置下,我们会发现 SQL Server
(MYINSTANCE)
会不间断的一直尝试去重启。这是因为启动 SQL
Server
需要时间,在一秒内,不能完成三次启动的尝试,所以在下一秒,又开始重新计数。

 

LOOKSALIVEISALIVE检查】

LOOKSALIVE检查比较简单,群集会去检查SQL Server这个服务的状态,确认SQL Server这个服务的状态处于RUNNING

bb

 

ISALIVE会做更进一步检查,它会连接到数据库里面,执行一条很简单的查询,明确该查询能返回,就说明数据库状况是正常的。

bb

 

缺省状况下,LOOKSALIVE每隔5秒做一次,而ISALIVE则每隔60秒做一次检查。

测试 => 我们打开SQL Profiler, 会发现每隔一分钟,从群集那里会有一个查询SELECT @@servername发过来。同时,我们会发现,我们的连接是一直保持着的。 

bb

 

我们也可以做另外一个测试,

建立一个 alias, MYSERVER\MYINSTANCE 映射到一个不存在的服务器上 在查询中,把从群集过来的连接 KILL 掉,(必须要这样做,否者连接没有断掉,还是用 MYSERVER\MYINSTANCE

这时,我们就会发现,ISALIVE检查会失败。因为群集无法连到数据库上。MYSERVER\MYINSTANCE已经被重定向了。

 PENDING TIMEOUT

要注意的是,这里的PENDING TIMEOUT并不是资源在ONLINE PENDINGOFFLINE PENDING的最长时间,事实上,SQL Server 可以超过PENDING TIMEOUT时间而一直处于ONLINE PENDINGOFFLINE PENDING状态。我们知道,每个资源都有一个Resource Monitor(资源管理器)。这里的PENDING TIMEOUT是群集询问资源管理器,资源管理器如果在PENDING TIMEOUT时间内没有回复,则群集会通过资源管理器调用Terminate函数把该资源强制OFFLINE。如果资源管理器在PENDING TIMEOUT时间内有回复,则资源可以继续处在ONLINE PENDINGOFFLINE PENDING状态。群集会在下一轮时间内,继续查询资源管理器, 而不是资源本身。

 

测试 => 我们把SQL Server (MYINSTANCE)PENDING TIMEOUT 改为10秒。然后把SQL资源OFFLINEONLINE,我们会发现SQL Server处于ONLINE PENDING超过了10秒,再过几秒,还是能成功处于ONLINE状态了。这是因为在ONLINE PENDING的过程中,资源管理器还是有响应的。

 

SQL 特有属性】

SQL Server 在群集环境下,如果做了一次FAILOVER,要找为什么会FAILOVER,在某些情况下会非常困难,因为问题不能重现,为了能够更好的调查FAILOVER的原因,SQL资源有一个特有的属性。也就是在FAILOVER发生的时候,对SQL Server收集一个Memory Dump,以供我们调查在FAILOVER时,当时SQL Server的状态。该属性可以用下面的语句查询得到:

bb

 

Cluster res “SQL Server (MYINSTANCE)” /priv SQLDumperDumpFlags=0x8100

Cluster res “SQL Server (MYINSTANCE)” /priv SQLDumperDumpPath=”C:\TEMP”

Cluster res “SQL Server (MYINSTANCE)” /priv SQLDumperDumpTimeOut=300000 

 

测试 =>

我们执行上面的命令,把特有属性设好 我们建一个 alias, MYSERVER\MYINSTANCE 重新定向到一个不存在的服务器名 查询 SELECT * FROM sys.sysprocesses 得到 Cluster 连数据库的 SPID KILL 51  这里 51 cluster 连数据库的 SPID 过一会儿, ISALIVE 检查失败, SQL 资源会做 FAILOVER, 同时在 C:\Temp 目录,我们会看到 filter
dump
产生。

【总结】

我们讨论了SQL Server在群集中的一些属性。了解这些属性,对于我们理解在群集环境下,SQL Server的行为是非常有帮助的。我们需要正确的设置这些属性,使得SQL Server能够在群集环境下,正常的工作。

fj.pngoct1.jpg

fj.pngoct2.jpg

fj.pngoct3.jpg

fj.pngoct4.jpg

fj.pngoct5.jpg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25175503/viewspace-708867/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25175503/viewspace-708867/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值