为SQL Server群集准备数据库

时间:2009-04-08 12:51:23

标签: sql-server database scalability load-balancing cluster-computing

我们计划在未来几个月内实施sql server 2005集群。我想知道在尝试实现这一目标时,需要采取哪些步骤/预防措施作为数据库开发人员?我们需要更改任何ado.net代码(在前端)/存储过程等等吗?有什么最好的做法可以遵循吗?

我之所以问这个问题的原因是:对于asp.net负载均衡,你必须确保你的会话/应用程序/缓存代码都符合负载均衡环境。 (因此,如果您正在使用inproc会话,则必须重写该代码,以使其在负载平衡环境中工作)。现在这是在您的Web服务器级别。我只是想在尝试扩展数据库服务器级别时做正确的事情

如果这个问题很愚蠢,我很抱歉。请原谅我对这个主题的有限知识: - )

2 个答案:

答案 0 :(得分:3)

您必须不进行前端更改才能实现SQL Server群集,只需正常连接到SQL Server实例。

但SQL Server故障转移群集不是负载平衡。如果主节点上的任何硬件发生故障,它将用于添加冗余。您的其他(辅助)节点在主服务器出现故障之前无法执行任何操作,在这种情况下,故障转移会自动发生,并且您的数据库会在10-20秒延迟后再次提供服务连接。

另一个问题是辅助节点上的缓存为空,因此您可能会在故障转移后看到一些性能影响。您可以使用SQL Server database mirroring在镜像服务器上实现“热”缓存,但无法通过群集执行类似的操作。

答案 1 :(得分:2)

数据库群集与负载平衡不同。这是高可用性,而不是“向外扩展”

基本上:

  • 具有共享磁盘的2个服务器(或节点)(任何时候只能由一个节点拥有)
  • 一个是“活动”运行虚拟Windows服务器和SQL Server实例
  • 一个是监控另一个(“被动”)
  • 您连接到虚拟Windows服务器。

如果节点1离线,则节点2接管。或者可以手动进行故障转移。

这意味着:节点1上的服务关闭,节点2控制磁盘和服务并启动。任何连接都将被破坏,并且不会传输任何状态或会话。