2017計(jì)算機(jī)等考三級(jí)數(shù)據(jù)庫(kù)輔導(dǎo):SQLServer2008高可用性解決方案優(yōu)劣分析

字號(hào):


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