SQL Server叢集伺服器的優缺點
由二臺或更多物理上獨立的伺服器共同組成的“虛擬”伺服器稱之為叢集伺服器。一項稱做MicroSoft叢集服務(MSCS)的微軟服務可對叢集伺服器進行管理。一個SQL Server叢集是由二臺或更多執行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環境有一定的優勢。然而,高實用性也確實伴隨某種折衷。
首先,建立一個叢集SQL Server環境非常昂貴。這是因為叢集中的節點必須遵照叢集節點的相容性列表。而且,還需要建立一個複雜的網路,機器的配置必須幾乎相同,同時需要實現資料庫檔案磁碟子系統共享。儲存區網路(SAN)是建立這種子系統的不錯選擇,但SAN並非必要,而且十分昂貴。另外,如果你正在執行一個主動/主動叢集,你需要為叢集中執行SQL Server例項的每臺機器的處理器購買一個許可。
因為當地叢集主要侷限於同一地理區域,自然災難可能會使叢集完全失靈。在那種情況下,你需要轉移到災難恢復站點進行繼續操作。你也可以建立地理分散的SQL Server叢集,但這樣的系統更加複雜與昂貴。