Load-Balancing

AlwaysOn SQL Server 2012 - 真正主動/主動的任何選項?

  • September 17, 2018

我即將升級一組 SQL Server 2008R2 並將其整合到單個 SQL Server 2012。我想要高可用性並尋找不同的選項。數據庫的數量相當高(150+),所以 DBMirroring 是不可能的。

現在我正在查看“AlwaysOn 可用性組”和“AlwaysOn 故障轉移集群”,我真的不知道該怎麼辦……也許還有更多的選擇可用。

集群可能是一種很好的做事方式,但是讓一個大型電源伺服器什麼都不做,只是等待主伺服器出現故障真的很煩人。

有沒有辦法在 SQL Server 中進行真正的主動/主動集群(真正的負載平衡)?

Microsoft SQL Server 不支持開箱即用的“真正的”負載平衡方案。AFAIK,SQL Server 2012 仍然如此。(如果我錯了,有人會啟發我。)我們談論的是數據庫鏡像、AlwaysOn 還是集群都沒有關係。

(為了強調這一點,MS 最近似乎將 SQL Server 集群稱為“SQL Server 故障轉移集群”。Pedantics。)

如果您想對數據庫進行負載平衡,您必須自己通過某種分片、聯合或複制來完成艱苦的工作。(請注意,自 SQL Server 2000 以來,產品中一直存在聯合(按視圖),只是不是很流行。)當然,這意味著修改您的數據庫或應用程序本身,這幾乎總是要麼大量工作或違反您的供應商協議。擁有 150 個數據庫,就更難以克服了。

您可以擁有一個主動-主動集群,但問題是您必須小心地將數據庫分佈在您的節點上以分配負載。如果有 150 個數據庫,這可能比只有 5 個數據庫更細化,但是如果您有一個負載很大的數據庫和 149 個輕量級或很少使用的數據庫,您可能仍然會發現一台機器陷入困境並且其他不是。而且,一些數據庫有時很忙,而在其他時間幾乎不忙。這意味著一切都可能歸結為使用者決定執行一些繁重的過程。

當然,無論出於何種原因,您必須能夠在故障轉移時支持單個節點上的所有負載,即使它是像修補 Windows 這樣平凡的事情。如果您只在已知的緩慢交通時段進行修補,那就太好了。如果您沒有緩慢的周期,或者如果由於硬體實際出現故障而發生故障轉移,則另一個節點可能不會承擔負載,您的使用者將不走運。如果你這樣想,讓第二台機器“無所事事”並不是那麼令人討厭。至少您知道它將佔用主節點通常執行的所有流量。

引用自:https://serverfault.com/questions/385818