提高SQL Server 2008可用性
數(shù)據(jù)庫(kù)鏡像
“Database Mirroring(數(shù)據(jù)庫(kù)鏡像)”是一種可提高數(shù)據(jù)庫(kù)可用性的技術(shù)。當(dāng)主體數(shù)據(jù)庫(kù)發(fā)生更改時(shí),這些更改也將自動(dòng)應(yīng)用到鏡像數(shù)據(jù)庫(kù)中。當(dāng)主體服務(wù)器發(fā)生故障時(shí),客戶機(jī)應(yīng)用程序可自動(dòng)重定向到鏡像服務(wù)器,而應(yīng)用程序無(wú)需進(jìn)行任何改動(dòng)。
可以對(duì) Database Mirroring 進(jìn)行配置,以對(duì)鏡像服務(wù)器實(shí)時(shí)應(yīng)用更改,稱為“同步”;或者近乎實(shí)時(shí)應(yīng)用更改,稱為“異步”,因此可以在系統(tǒng)中指定保護(hù)級(jí)別和性能開(kāi)銷。
有了 SQL Server 2008 Enterprise Edition 之后,鏡像保護(hù)就可擴(kuò)展到數(shù)據(jù)頁(yè)。如果發(fā)現(xiàn)主體服務(wù)器或鏡像服務(wù)器上的數(shù)據(jù)頁(yè)損壞,將從伙伴服務(wù)器上檢索對(duì)應(yīng)的數(shù)據(jù)頁(yè),而數(shù)據(jù)操作也會(huì)平穩(wěn)地繼續(xù)執(zhí)行。SQL Server 2008 還改善了數(shù)據(jù)庫(kù)鏡像,它將壓縮主體服務(wù)器與鏡像服務(wù)器之間的數(shù)據(jù)流,而且在手動(dòng)執(zhí)行故障恢復(fù)時(shí),無(wú)需重啟數(shù)據(jù)庫(kù)。
在基于 Internet 的運(yùn)動(dòng)商品公司的案例中,當(dāng)出現(xiàn)服務(wù)器、數(shù)據(jù)庫(kù)或頁(yè)級(jí)故障時(shí),Database Mirroring 將提供非常迅速的故障恢復(fù)能力。雖然必須購(gòu)買新服務(wù)器,但無(wú)需重寫應(yīng)用程序,備用服務(wù)器是標(biāo)準(zhǔn)設(shè)備,不需要 SQL Server 許可證。
日志傳送
“日志傳送”是一種高可用性技術(shù),它提供了溫備用服務(wù)器。備份是在主服務(wù)器上執(zhí)行的,而還原是在一個(gè)或多個(gè)輔助服務(wù)器上執(zhí)行的。然后,“日志傳送”將定期日志備份應(yīng)用于輔助服務(wù)器。雖然數(shù)據(jù)庫(kù)鏡像只能有一臺(tái)鏡像服務(wù)器,但“日志傳送”可以有許多輔助服務(wù)器,這可以提高保護(hù)級(jí)別。
“日志傳送”是按照時(shí)間表執(zhí)行的,因此在主服務(wù)器上的數(shù)據(jù)更改與這些更改傳輸?shù)捷o助服務(wù)器上之間有時(shí)間延遲。這種延遲會(huì)導(dǎo)致數(shù)據(jù)損失,但在許多應(yīng)用場(chǎng)景下,這些延遲可用作還原用戶錯(cuò)誤的一種方法,因?yàn)榭梢匝舆t日志數(shù)據(jù)在輔助服務(wù)器上的應(yīng)用(從而保留輔助服務(wù)器上的原始數(shù)據(jù))。
為降低主服務(wù)器的工作負(fù)荷,輔助服務(wù)器可用作只讀報(bào)告服務(wù)器,但在應(yīng)用日志備份時(shí)無(wú)法運(yùn)行報(bào)告。
在獵頭公司的案例中,可利用日志備份與備用服務(wù)器執(zhí)行還原之間的延遲應(yīng)用“日志傳送”。這可以扭轉(zhuǎn)由用戶導(dǎo)致的錯(cuò)誤情形,因?yàn)槿绻鞣?wù)器發(fā)生故障,可以直接應(yīng)用日志以減少數(shù)據(jù)損失。
故障轉(zhuǎn)移群集
“故障轉(zhuǎn)移群集”是一種 Windows 功能,可對(duì)整個(gè)服務(wù)器提供保護(hù),而不只是保護(hù)數(shù)據(jù)庫(kù)。多臺(tái)服務(wù)器(稱為“節(jié)點(diǎn)”)共享磁盤陣列,因此如果一個(gè)節(jié)點(diǎn)發(fā)生故障,則可在集群中的另一個(gè)節(jié)點(diǎn)上啟動(dòng)它的服務(wù)。該解決方案可以防止任何數(shù)據(jù)損失,并提供自動(dòng)的客戶機(jī)重定向服務(wù),但從主服務(wù)器到輔助服務(wù)器的故障恢復(fù)操作沒(méi)有數(shù)據(jù)庫(kù)鏡像那樣快,而且需要專門的硬件。
Windows Server 2008 擴(kuò)展了舊版 Windows 的群集功能,它降低了對(duì)硬件和基礎(chǔ)結(jié)構(gòu)的要求,且在一個(gè)群集中支持16個(gè)節(jié)點(diǎn)。此外,由于不要求所有節(jié)點(diǎn)都駐留于同一個(gè)子網(wǎng)中并支持 OR 依賴關(guān)系(例如,當(dāng)兩個(gè) IP 地址資源中的任何一個(gè)可用時(shí),可確保網(wǎng)絡(luò)名資源也可用),因而強(qiáng)化了群集功能。從總體上講,在 Windows Server 2008 中可以更容易地設(shè)置和管理群集,而引進(jìn)的群集驗(yàn)證工具有助于確保群集解決方案有足夠的硬件資源。通過(guò)利用 Windows Server 2008 中的群集增強(qiáng)功能,SQL Server 2008 為整個(gè) SQL Server 實(shí)例提供了健壯的高可用性解決方案。SQL Server 2008 還改善了舊版的群集功能,它不要求每個(gè) SQL Server 實(shí)例都要有一個(gè)盤符,這提高了群集解決方案可以支持的實(shí)例數(shù)量。
在保險(xiǎn)公司案例中,“故障轉(zhuǎn)移群集”可用于提供近似連續(xù)的可用性?!肮收限D(zhuǎn)移群集”不會(huì)影響系統(tǒng)性能,因?yàn)樗且环N服務(wù)器級(jí)解決方案,能夠?yàn)榉?wù)器上的其他資源提供可用性。如果擔(dān)心共享磁盤陣列不能提供足夠的冗余,則可使用“地理分散群集”。
地理分散故障轉(zhuǎn)移群集
“地理分散故障轉(zhuǎn)移群集”按照認(rèn)證的 Microsoft Geographically Dispersed Cluster Services 配置提供服務(wù)器級(jí)冗余,該配置要求每個(gè)站點(diǎn)擁有一個(gè)或多個(gè)存儲(chǔ)陣列。如果站點(diǎn)、服務(wù)器節(jié)點(diǎn)或磁盤發(fā)生故障,系統(tǒng)和磁盤的完整冗余將使故障轉(zhuǎn)移群集能夠處理另一站點(diǎn)上的后續(xù)活動(dòng)。該配置可避免共享磁盤陣列發(fā)生故障的風(fēng)險(xiǎn),這將阻止標(biāo)準(zhǔn)群集配置發(fā)揮作用。
對(duì)等復(fù)制
“對(duì)等復(fù)制”使多個(gè)數(shù)據(jù)庫(kù)能夠相互復(fù)制??梢詫?duì)任何數(shù)據(jù)庫(kù)執(zhí)行更改,而且能以接近實(shí)時(shí)的方式將這些更改應(yīng)用于復(fù)制拓?fù)渲械钠渌?jié)點(diǎn)。應(yīng)用程序的設(shè)計(jì)要求是,如果主體服務(wù)器不可用,應(yīng)用程序必須能夠連接拓?fù)渲械钠渌?jié)點(diǎn)。
SQL Server 2008 強(qiáng)化了對(duì)等復(fù)制功能,它可在復(fù)制解決方案中增加節(jié)點(diǎn),同時(shí)保持復(fù)制流程處于在線狀態(tài)。在舊版的 SQL Server 中,要增加新節(jié)點(diǎn),必須在離線狀態(tài)下執(zhí)行復(fù)制流程。此外,SQL Server 2008 可以直接利用圖形化 Topology Viewer 對(duì)對(duì)等復(fù)制進(jìn)行設(shè)置、監(jiān)督和管理。SQL Server 2008 還引進(jìn)了沖突檢測(cè)機(jī)制,可以防止多個(gè)復(fù)制節(jié)點(diǎn)更新同一行時(shí)產(chǎn)生的偶然沖突。
在管理培訓(xùn)公司的案例中,對(duì)等復(fù)制可以從本地訪問(wèn)整個(gè)訂單數(shù)據(jù)庫(kù),如果另一站點(diǎn)的數(shù)據(jù)庫(kù)不可用,則每個(gè)站點(diǎn)都可以用于故障恢復(fù)。
【編輯推薦】