4

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

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

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

回答

3

您必须不做前端更改才能实现SQL Server群集,只需简单地连接到SQL Server实例即可。

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

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

2

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

基本上:

  • 2服务器(或节点)与共享磁盘(即只能由一个节点在任何时间被拥有)
  • 一个是“活性“运行一个虚拟的Windows服务器和SQL Server实例
  • 一个正在监视其他(”被动“)的连接到虚拟windows服务器的其他(”被动“)

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

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