由二台或更多物理上獨立的服務器共同組成的“虛擬”服務器稱之為集群服務器。一項稱做MicroSoft集群服務(MSCS)的微軟服務可對集群服務器進行管理。一個SQL Server集群是由二台或更多運行SQL Server的服務器(節點)組成的虛擬服務器。如果集群中的一個節點發生故障,集群中的另一個節點就承擔這個故障節點的責任。
認為一個 SQL Server集群能夠給集群中的兩個節點帶來負載平衡,這是一種常見的誤解。雖然這似乎很有用,但卻是不正確的。這也意味著集束SQL Server不能真正提高性能。集束SQL Server只能提供故障轉移功能。故障轉移就是當系統中的一台機器發生故障失去其功能時,另一台機器將接手運行它的SQL Server實例。這種功能失效可能是由於硬件故障、服務故障、人工故障或各種其它原因。
在實用性方面,集群SQL Server環境令人滿意。在進行故障轉移時,將數據庫實例由一台服務器轉移到另一台服務器的時間非常短暫,一般只需要3至7秒鐘。雖然需要重建連接,但對數據庫的終端用戶而言,故障轉移處理通常是透明的。低廉的故障轉移成本還可幫助你對集群中的節點進行維護,而不會造成服務器完全無法訪問。
一共有兩種類型的SQL Server集群:主動/被動集群和主動/主動集群。下面分別對它們進行說明(說明以兩個節點的SQL Server集群為基礎)。
在這種類型的集群中,一次只有一個節點控制SQL Server資源。另一個節點一直處於備用模式,等待故障發生。進行故障轉移時,備用的節點即取得SQL Server資源的控制權。
優點:由於服務器上只有一個實例在運行,所以在進行故障轉移時,不需要另外的服務器來接管兩個SQL Server實例,性能也不會因此降低。
缺點:由於虛擬服務器上只有一個SQL Server實例在運行,另一台服務器總是處理備用模式與空閒狀態。這意味著你並沒有充分利用你購買的硬件。
在這種類型的集群中,集群中的每個節點運行一個獨立且主動的SQL Server實例。發生節點故障時,另一個節點能夠控制發生故障節點的SQL Server實例。然後這個正常的節點將運行兩個SQL Server實例——它自己的實例和發生故障的實例。
優點:通過這種配置,你能夠充分利用你的硬件。在這樣的系統中,兩個服務器都在運行,而不是只有一台服務器運行,而另一台處於等待故障發生的備用模式,因此你能夠充分利用你購買的機器。
缺點:如果進行故障轉移,一台服務器運行兩個SQL Server實例,性能就會受到不利影響。然而,性能降低總比虛擬服務器完全失靈要強得多。這種配置的另一故障在於它要求購買的許可要比主動/被動集群多一些。因為集群在運行兩個主動SQL Server實例,這要求你購買兩個單獨的服務器許可。在某些情況下,這也可能對你形成阻礙。
在高實用性方面,集群SQL Server環境有一定的優勢。然而,高實用性也確實伴隨某種折衷。
首先,建立一個集群SQL Server環境非常昂貴。這是因為集群中的節點必須遵照集群節點的兼容性列表。而且,還需要建立一個復雜的網絡,機器的配置必須幾乎相同,同時需要實現數據庫文件磁盤子系統共享。存儲區網絡(SAN)是建立這種子系統的不錯選擇,但SAN並非必要,而且十分昂貴。另外,如果你正在運行一個主動/主動集群,你需要為集群中運行SQL Server實例的每台機器的處理器購買一個許可。
因為當地集群主要局限於同一地理區域,自然災難可能會使集群完全失靈。在那種情況下,你需要轉移到災難恢復站點進行繼續操作。你也可以建立地理分散的SQL Server集群,但這樣的系統更加復雜與昂貴。