AlwaysOn SQL Server 2012 - 真正主动/主动的任何选项?

Nic*_*ajB 5 failover load-balancing sql-server-2012

我即将升级并整合一组 SQL Server 2008R2 到单个 SQL Server 2012。我想要高可用性并寻找不同的选项。数据库的数量相当多(150+),所以 DBMirroring 是不可能的。

现在我正在查看“AlwaysOn Availability Group”和“AlwaysOn 故障转移集群”,但我真的不知道该走哪条路……也许还有更多选项可用。

集群可能是一个很好的做事方式,但是让一个强大的服务器什么都不做,而是等待主服务器出现故障真的很烦人。

有没有办法在 SQL Server 中进行真正的主动/主动集群(真正的负载平衡)?

Dar*_*ait 7

Microsoft SQL Server 不支持开箱即用的“真实”负载平衡方案。AFAIK,这仍然适用于 SQL Server 2012。(如果我错了,有人会启发我。)我们谈论的是数据库镜像还是 AlwaysOn 或集群并不重要。

(为了强调这一点,MS 最近似乎将 SQL Server 集群称为“SQL Server 故障转移集群”。学究。)

如果你想对你的数据库进行负载平衡,你必须自己通过某种分片、联合或复制来完成艰苦的工作。(请注意,从 SQL Server 2000 开始,产品中就出现了联合(按视图),它只是不是很受欢迎。)当然,这意味着修改您的数据库或应用程序本身,这几乎总是也是如此大量工作或违反您的供应商协议。有了 150 个数据库,它就更加难以逾越了。

您可以拥有一个主动-主动集群,但问题是您必须小心地将数据库分布在您的节点上以分配负载。有 150 个数据库,这可能比只有 5 个数据库时更精细,但是如果您有一个负载大量的数据库和 149 个轻量级或很少使用的数据库,您可能仍然会发现一台机器陷入困境,并且其他不是。而且,有些数据库有时很忙,而在其他时候几乎不忙。这意味着一切都可能归结为用户决定运行一些繁重的进程。

当然,您必须能够在故障转移时支持单个节点上的所有负载,无论出于何种原因,即使是像修补 Windows 这样的普通事情。如果您只在已知的低流量时段打补丁,那就太好了。如果您没有缓慢的时间段,或者如果由于硬件实际上有故障而发生故障转移,则另一个节点可能无法承担负载,您的用户将不走运。如果你这样想,让第二台机器“无所事事”并不是那么令人恼火。至少您知道它会占用主服务器通常执行的所有流量。