解析SQL Server 2008高可用性技術(shù)特點(diǎn)
基于磁盤的備份
?
首先來看的是最簡單的技術(shù)——備份。在SQL Server 2008的企業(yè)版中,備份有了一個新的特性,那就是備份壓縮。那么備份壓縮對于高可用有什么幫助呢?
那么就要提到現(xiàn)在業(yè)界非常流行的一種備份解決方案——磁盤備份解決方案,有很多與該解決方案相近的名稱:在線備份、虛擬磁帶庫等等。這些方案其實(shí)都是基于一個思想,將數(shù)據(jù)備份到快速的在線磁盤設(shè)備上,這樣就可以利用磁盤的高速IO和高速檢索能力。不過磁盤的高昂代價往往是這種企業(yè)在這一解決方案面前駐足不前的主要原因,而現(xiàn)在SQL Server 2008企業(yè)版中的備份壓縮可以大幅度減少備份后的文件尺寸,因此基于磁盤的備份解決方案看起來也更加有競爭力了。
基于磁盤的備份帶來***的好處就是利用磁盤高速IO的能力進(jìn)行快速的還原。這就可以縮短數(shù)據(jù)庫服務(wù)離線的時間,同時也可以減少數(shù)據(jù)庫備份這一維護(hù)操作對應(yīng)用的影響。
數(shù)據(jù)庫鏡像+故障轉(zhuǎn)移集群
?
上面我們介紹的故障轉(zhuǎn)移集群、日志傳送亦或基于磁盤的備份都是作為單一技術(shù)出現(xiàn)的,而在真實(shí)的大中型企業(yè)環(huán)境中為了確保數(shù)據(jù)應(yīng)用的持續(xù)在線,我們通常有一些組合多種高可用技術(shù)的方案。通過混合不同可用性技術(shù),我們將可以采長補(bǔ)短。
例如數(shù)據(jù)庫鏡像技術(shù)。
雖然數(shù)據(jù)庫鏡像可以解決故障轉(zhuǎn)移集共享存儲存在單點(diǎn)失效威脅、依賴于特殊硬件等一系列的問題,但是數(shù)據(jù)庫鏡像***的問題就是故障轉(zhuǎn)移路徑過短。對于大中型企業(yè)來說,僅有兩個節(jié)點(diǎn)的故障轉(zhuǎn)移路徑有些不足。因此通過增加一個故障轉(zhuǎn)移集群作為數(shù)據(jù)庫鏡像的鏡像節(jié)點(diǎn)就可以解決了數(shù)據(jù)庫鏡像故障轉(zhuǎn)移路徑過短的問題。
上面這種解決方案當(dāng)主體服務(wù)器失效后,數(shù)據(jù)庫鏡像會將啟動鏡像節(jié)點(diǎn),而由于鏡像節(jié)點(diǎn)是由一個故障轉(zhuǎn)移集群承擔(dān)的,因此當(dāng)鏡像節(jié)點(diǎn)中的一個節(jié)點(diǎn)失效后還有一個后備節(jié)點(diǎn),因此還可以有一個后備節(jié)點(diǎn)承擔(dān)。
其實(shí)故障轉(zhuǎn)移集群和數(shù)據(jù)庫鏡像是各有利弊,因此這兩種技術(shù)融合在一起后的解決方案不僅僅是上面這一種,下面就給出另外一種解決方案的示意圖:
細(xì)心的讀者可能會發(fā)現(xiàn),方案二種沒有了見證節(jié)點(diǎn),這意味著從主集群切換到鏡像集群需要手動完成。那么為什么這種解決方案中沒有了見證節(jié)點(diǎn)呢?
因?yàn)閿?shù)據(jù)庫鏡像和故障轉(zhuǎn)移集群都擁有自動故障轉(zhuǎn)移的特性,如果兩種技術(shù)的自動切換都生效的話,那么在主體集群的活動節(jié)點(diǎn)失效后就會有兩個節(jié)點(diǎn)同時試圖生效——主體集群的后備節(jié)點(diǎn)和鏡像集群的活動節(jié)點(diǎn),那么結(jié)果就只有一個,數(shù)據(jù)庫鏡像會話失敗。
遠(yuǎn)程故障轉(zhuǎn)移集群
對于某些跨地區(qū)甚至是跨洲的大型集團(tuán)來說,站點(diǎn)失效這個困擾會逐漸進(jìn)入IT主管和DBA的腦海中。
不過遠(yuǎn)程故障轉(zhuǎn)移集群就不僅僅是SQL Server一個人就能完成的了,這個方案要依賴于SQL Server,Windows Server這些基礎(chǔ)軟件,還要依賴于存儲設(shè)備、交換機(jī)、服務(wù)器這些硬件。
因?yàn)樵谶h(yuǎn)程故障轉(zhuǎn)移集群中,共享儲存不再存在于一個數(shù)據(jù)中心,而是可能相距數(shù)十公里,甚至數(shù)千公里,因此中長距的底層存儲同步往往是這一解決方案的關(guān)鍵。對于中長距的底層存儲同步,通常分為兩種,一種是在30公里內(nèi)的,通過單模光纖可以實(shí)現(xiàn)兩個數(shù)據(jù)中心存儲設(shè)備間的同步復(fù)制,而另外一種則是在30公里之外了,而這種情況通常都是通過租用ICP的線路來實(shí)現(xiàn)兩地間的異步復(fù)制。聽上去好像很復(fù)雜,不過不用擔(dān)心,EMC這樣的廠商有非常成熟的硬件設(shè)備以及相關(guān)軟件。這就是為什么在SQL Server的Always On中會出現(xiàn)EMC這樣第三方廠商名字的原因。
遠(yuǎn)程故障轉(zhuǎn)移集群的替代方案
其實(shí)對于遠(yuǎn)程故障轉(zhuǎn)移集群來說,主要解決的問題是站點(diǎn)失效的問題,因此單純使用SQL Server的功能也可以解決這個問題。盡管沒有基于硬件的那么高效和穩(wěn)定。
那么怎么構(gòu)建一個相對廉價的遠(yuǎn)程容災(zāi)方案呢?我們的答案是故障轉(zhuǎn)移集群+日志傳送/復(fù)制。在不提到這兩項(xiàng)技術(shù)的話,他們兩個一定會有意見的。
日志傳送依賴于日志備份以及還原來實(shí)現(xiàn)數(shù)據(jù)同步的,而復(fù)制呢,除了日志外多了一個快照(注意:復(fù)制中使用日志的方式與日志傳送是不一樣的)。因此我們只要確保主服務(wù)器的日志能夠以一個合理的頻率傳送給遠(yuǎn)端的后備服務(wù)器,我們就可以提供一定程度上遠(yuǎn)程容災(zāi)能力了。
可是在SQL Server 2005之前,復(fù)制和日志傳送都有一些小問題,日志傳送是依賴于日志備份作業(yè)、日志傳送作業(yè)和日志還原作業(yè),因此日志傳送無法做到連續(xù)性,他的嘴短同步間隔是一分鐘,無法再短了。事務(wù)復(fù)制盡管能做連續(xù),但是事務(wù)復(fù)制有主從之分,如果是多站點(diǎn)這項(xiàng)技術(shù)會嚴(yán)重限制后備服務(wù)器的自治能力。
不過從SQL Server 2005開始,事務(wù)復(fù)制有了一種新的模式,叫做對等事務(wù)復(fù)制。對等事務(wù)復(fù)制平等看待參與復(fù)制的所有節(jié)點(diǎn),而取消了主從之分。這就給我們的多站點(diǎn)數(shù)據(jù)服務(wù)規(guī)劃指出了一條新的道路。
不過大家在這張有些夸張的圖里面也許可以看出些端倪。通過對等事務(wù)復(fù)制,我們確實(shí)可以設(shè)計(jì)出一個非常復(fù)雜的數(shù)據(jù)復(fù)制拓?fù)洌酶咚?低速線路,優(yōu)質(zhì)/常規(guī)線路,我們可以在分布于多個站點(diǎn)的服務(wù)器之間構(gòu)建出一個復(fù)制拓?fù)洹Uf上面這張圖是開玩笑,原因是通常復(fù)制拓?fù)洳粫@么混亂,但是對等復(fù)制一定可以制成這張圖上出現(xiàn)的服務(wù)器數(shù)量,關(guān)鍵是要良好規(guī)劃和設(shè)計(jì)。
算了,給張清楚點(diǎn)的吧。這是一個比較真實(shí)地對等復(fù)制拓?fù)洌覀冇袃蓚€站點(diǎn)。站點(diǎn)內(nèi)擁有高速的鏈接,而站點(diǎn)間則是相對低速的租用鏈路。A、B、C分別是三個應(yīng)用的數(shù)據(jù)庫,A和C是本地性應(yīng)用,因此僅在單個站點(diǎn)內(nèi)進(jìn)行了復(fù)制,保證其容災(zāi)能力,而B是一個集團(tuán)性的應(yīng)用,為了確保其數(shù)據(jù)的可用性,因此在站點(diǎn)內(nèi)和站點(diǎn)間分別實(shí)現(xiàn)了復(fù)制冗余,同時站點(diǎn)A和站點(diǎn)B可以互不干擾對數(shù)據(jù)的使用(當(dāng)然這要依賴于數(shù)據(jù)庫的設(shè)計(jì)和對等復(fù)制鏈路的配置)。
SQL Server 2008在對等復(fù)制方面也有一個小小的改進(jìn),那就是沖突檢測。在SQL Server 2005的對等事務(wù)復(fù)制中,沖突是一個非常頭疼的事情,因此才會要求非常嚴(yán)格的數(shù)據(jù)訪問隔離設(shè)計(jì)。SQL Server 2008會在發(fā)生沖突的時候暫停復(fù)制,既保證了兩個站點(diǎn)間的正常數(shù)據(jù)訪問,也保證了在數(shù)據(jù)沖突時不會錯誤覆蓋正確的數(shù)據(jù)版本。
結(jié)束語
?
其實(shí)SQL Server的可用性和數(shù)據(jù)應(yīng)用的可用性完全是兩個層面的事情,SQL Server僅僅是數(shù)據(jù)應(yīng)用中的一個組成部分,因此如何達(dá)到真正的系統(tǒng)可用性,還要考慮更多的問題,通訊(交換機(jī)、路由器之類)、網(wǎng)絡(luò)服務(wù)(DNS、DHCP之類)、操作系統(tǒng)、應(yīng)用服務(wù)(IIS、中間件服務(wù)器),還有很多很多的問題。
【編輯推薦】