在SQL Server 2008數(shù)據(jù)庫中,本身就帶有不少的高可用性解決方案。如可以采用故障轉(zhuǎn)移群集、數(shù)據(jù)庫鏡像、日志傳送或者復(fù)制等手段來提高數(shù)據(jù)庫的高可用性。由于解決方案多了,數(shù)據(jù)庫管理員不得不掌握各個解決方案的優(yōu)點與缺陷,然后根據(jù)企業(yè)的實際應(yīng)用來選擇合適的解決方案。其實,這不僅僅是在考驗解決方案的優(yōu)劣性,也是在考驗數(shù)據(jù)庫管理員的能力。
一、數(shù)據(jù)庫鏡像的優(yōu)劣分析。
數(shù)據(jù)庫鏡像是一個軟件解決方案,可以提供幾乎是瞬時的故障轉(zhuǎn)移,以提高數(shù)據(jù)庫的可用性。簡單的說,數(shù)據(jù)庫鏡像解決方案就是設(shè)置多個數(shù)據(jù)庫,在多個數(shù)據(jù)庫之間進行數(shù)據(jù)多同步。不同在同一個時間內(nèi),只有一個生產(chǎn)數(shù)據(jù)庫(或者叫做主體數(shù)據(jù)庫),而其他數(shù)據(jù)庫都是備用數(shù)據(jù)庫(又叫做鏡像數(shù)據(jù)庫)。當(dāng)主體數(shù)據(jù)庫出現(xiàn)故障時,系統(tǒng)會自動切換到鏡像數(shù)據(jù)庫上。此時這個鏡像數(shù)據(jù)庫就變?yōu)榱酥黧w數(shù)據(jù)庫。由于主體數(shù)據(jù)庫與鏡像數(shù)據(jù)庫之間數(shù)據(jù)進行了實時的同步,所以對于用戶訪問來說,基本不受影響。
鏡像服務(wù)器解決方案最大的優(yōu)點就是可以提供幾乎是瞬時的故障轉(zhuǎn)移。不過所采用的數(shù)據(jù)庫鏡像的方案不同,對于這個“瞬時”的影響也是不同的。數(shù)據(jù)庫鏡像可以具體分為高安全模式與高性能模式。在高安全模式下,主要體現(xiàn)“安全”兩個字,已提交的事務(wù)會交給伙伴雙方提交,此時雖然比較安全,大那時會延長事務(wù)滯后的時間。而在高性能模式下,事務(wù)部需要等待鏡像服務(wù)器將日志寫入到硬盤中便可以提交,為此可以最大程度的提高數(shù)據(jù)庫數(shù)據(jù)不同的性能。
不過這個解決方案也有一定的缺陷,最主要是其限制條件比較多。如只能夠使用標(biāo)準(zhǔn)服務(wù)器;只能夠使用數(shù)據(jù)庫快照對鏡像服務(wù)器進行有限的報告;只能夠使用數(shù)據(jù)庫單一、重復(fù)的副本。如果需要其他的副本的話,在可以在使用數(shù)據(jù)庫鏡像的同時,采用數(shù)據(jù)庫的日志傳送功能?梢妿讉不同的解決方案可以一起結(jié)合使用,吸長補短,以提高數(shù)據(jù)庫的性能與高可用性。
二、日志傳送的優(yōu)劣分析。
跟數(shù)據(jù)庫鏡像一樣,日志傳送也是數(shù)據(jù)庫級別的操作。通常情況下,可以使用日志傳送來維護相應(yīng)生產(chǎn)數(shù)據(jù)庫的一個或者多個備用數(shù)據(jù)庫。在日志傳送中,這個生產(chǎn)服務(wù)器叫做主數(shù)據(jù)庫服務(wù)器,備份服務(wù)器叫做輔助數(shù)據(jù)庫。而在數(shù)據(jù)庫鏡像解決方案中,這個生產(chǎn)服務(wù)器也叫做主數(shù)據(jù)庫服務(wù)器,不過這個輔助數(shù)據(jù)庫則叫做鏡像數(shù)據(jù)庫。雖然他們的名字相同,但是實際上代表著同一種含義。日志傳送配置包括一個主服務(wù)器(包含主數(shù)據(jù)庫),一個或多個輔助服務(wù)器(每個服務(wù)器包含一個輔助數(shù)據(jù)庫)和一個監(jiān)視服務(wù)器。每個輔助服務(wù)器從主數(shù)據(jù)庫的日志備份按設(shè)置的時間間隔更新其輔助數(shù)據(jù)庫。日志傳送涉及到主服務(wù)器創(chuàng)建主數(shù)據(jù)庫日志備份和輔助服務(wù)器還原日志備份之間用戶可修改的延遲。發(fā)生故障轉(zhuǎn)移之前,必須通過手動應(yīng)用全部未還原的日志備份來完全更新輔助數(shù)據(jù)庫。
日志傳送的優(yōu)勢也很明顯,如最大的優(yōu)勢可以根據(jù)需要來定義數(shù)據(jù)同步的時間,如可以將延遲的時間定義為從主服務(wù)器備份主數(shù)據(jù)庫日志到輔助服務(wù)器必須還原日志備份之間的時間。在某些特定的應(yīng)用環(huán)境中,這個特性會非常的有用。而且,針對單個主數(shù)據(jù)庫可以在多個服務(wù)器實例上支持多個輔助數(shù)據(jù)庫等等。
不過在有些情況下,這個日志傳送解決方案往往不單獨使用。例如將日志傳送解決方案與數(shù)據(jù)庫鏡像結(jié)合使用。如此的話,這兩個解決方案就能夠各自發(fā)揮彼此的優(yōu)勢,以實現(xiàn)互補的目的。如日志傳送具有支持多個備用數(shù)據(jù)庫的靈活性。如果需要多個備用數(shù)據(jù)庫,可以單獨使用日志傳送或?qū)⑵渥鳛閿?shù)據(jù)庫鏡像的補充。當(dāng)這些解決方案一起使用時,當(dāng)前數(shù)據(jù)庫鏡像配置的主體數(shù)據(jù)庫同時也是當(dāng)前日志傳送配置的主數(shù)據(jù)庫。
三、故障轉(zhuǎn)移群集的優(yōu)劣分析。
故障轉(zhuǎn)移群集由具有兩個或多個共享硬盤的一個或多個節(jié)點或服務(wù)器組成。各應(yīng)用程序?qū)惭b到一個稱為資源組的群集服務(wù)群集組中。在任何時候,每個資源組都僅屬于群集中的一個節(jié)點。該應(yīng)用程序服務(wù)具有一個與節(jié)點名稱無關(guān)的虛擬名稱,稱為故障轉(zhuǎn)移群集實例名稱。應(yīng)用程序可以通過引用故障轉(zhuǎn)移群集實例名稱與故障轉(zhuǎn)移群集實例連接。應(yīng)用程序不必知道哪一節(jié)點承載該故障轉(zhuǎn)移群集實例。跟上面兩個解決方案相比,這個故障轉(zhuǎn)移群集解決方案可以說是一個基于硬件的解決方案。
故障轉(zhuǎn)移群集解決方案也有不少的限制條件。有些限制條件跟數(shù)據(jù)庫鏡像的解決方案是相同的。如兩個方案都只能夠利用數(shù)據(jù)庫的單個副本;需要在服務(wù)器實例范圍內(nèi)進行方案的實施(在鏡像解決方案中比較確切的說法是需要在服務(wù)器作用范圍內(nèi)進行實施)。另外對于股指群集解決方案中,還有另外的一些限制。如是因為基于硬件的解決方案,為此對于硬件有比較特殊的要求,如要求硬件必須是簽名的硬件等等;另外也不能夠防止磁盤故障等等。其次就是在報告功能上的限制。由于故障轉(zhuǎn)移群集不致此后備用部分的報告功能,這或多或少讓一些數(shù)據(jù)庫管理員感到遺憾。
不過與其他解決方案相比,這個故障轉(zhuǎn)移群集也有很大的優(yōu)勢。如具有自動監(jiān)測和故障轉(zhuǎn)移的特性。如在當(dāng)前節(jié)點不可用時,這個解決方案可以自動監(jiān)測到這種故障,并可以自動在節(jié)點之間進行故障轉(zhuǎn)移。假設(shè)在發(fā)生操作系統(tǒng)故障、非磁盤硬件故障或者對操作系統(tǒng)或者數(shù)據(jù)庫系統(tǒng)進行升級時,可以在故障轉(zhuǎn)移群集的一個節(jié)點上配置 SQL Server 實例,使其故障轉(zhuǎn)移到磁盤組中的任意其他節(jié)點。不僅可以自動監(jiān)測和故障轉(zhuǎn)移,有時候出于特定的目的,還可以進行手動故障轉(zhuǎn)移。如對數(shù)據(jù)庫服務(wù)器進行升級時,可以手動的啟動另外一個節(jié)點等等。另外最重要的一點就是可以透明客戶端重定向。
復(fù)制解決方案的優(yōu)劣分析。
在SQLServer數(shù)據(jù)庫中,復(fù)制也是提高可用性的一個常用的解決方案。復(fù)制使用發(fā)布-訂閱模式。這樣,主服務(wù)器(稱為發(fā)布服務(wù)器)便可向一個或多個輔助服務(wù)器(即訂閱服務(wù)器)分發(fā)數(shù)據(jù)。復(fù)制可在這些服務(wù)器間提供實時的可用性和可伸縮性。它支持篩選,以便為訂閱服務(wù)器提供數(shù)據(jù)子集,同時還支持分區(qū)更新。訂閱服務(wù)器處于聯(lián)機狀態(tài),并且可用于報告或其他功能,而無需進行查詢恢復(fù)。SQL Server 提供三種復(fù)制類型:快照復(fù)制、事務(wù)復(fù)制以及合并復(fù)制。這里需要注意一點,在寫項目文檔的時候,需要注意不同解決方案中對于主服務(wù)器與備份服務(wù)器的稱呼都是不同的。如果數(shù)據(jù)庫管理員在制作文檔時發(fā)生張冠李戴的情況,雖然他們只是叫法不同,其代表的含義基本上相同。
筆者認為,采用復(fù)制這個解決方案,相比其他方案來說,主要的優(yōu)勢有兩個。一個是可以實現(xiàn)數(shù)據(jù)刷選,即可以決定在訂閱服務(wù)器中保存發(fā)布服務(wù)器中的哪些數(shù)據(jù)。訂閱服務(wù)器可以使發(fā)布服務(wù)器的子集,包含其部分數(shù)據(jù),而不是全部數(shù)據(jù)。數(shù)據(jù)同步的效率就會比較高,因為可能不需要對全部數(shù)據(jù)進行同步。另外一個優(yōu)勢就是復(fù)制這個解決方案,數(shù)據(jù)滯后的時間最短,即數(shù)據(jù)同步最及時。