深入了解SQL Server 2008高可用性

基于磁盤的備份

首先來看的是最簡單的技術——備份。在SQL Server 2008的企業版中,備份有了一個新的特性,那就是備份壓縮。那麽備份壓縮對于高可用有什麽幫助呢?

那麽就要提到現在業界非常流行的一種備份解決方案——磁盤備份解決方案,有很多與該解決方案相近的名稱:在線備份、虛擬磁帶庫等等。這些方案其實都是基于一個思想,將數據備份到快速的在線磁盤設備上,這樣就可以利用磁盤的高速IO和高速檢索能力。不過磁盤的高昂代價往往是這種企業在這一解決方案面前駐足不前的主要原因,而現在SQL Server 2008企業版中的備份壓縮可以大幅度減少備份後的文件尺寸,因此基于磁盤的備份解決方案看起來也更加有競爭力了。

基于磁盤的備份帶來最大的好處就是利用磁盤高速IO的能力進行快速的還原。這就可以縮短數據庫服務離線的時間,同時也可以減少數據庫備份這一維護操作對應用的影響。

數據庫鏡像+故障轉移集群

上面我們介紹的故障轉移集群、日志傳送亦或基于磁盤的備份都是作爲單一技術出現的,而在真實的大中型企業環境中爲了確保數據應用的持續在線,我們通常有一些組合多種高可用技術的方案。通過混合不同可用性技術,我們將可以采長補短。

例如數據庫鏡像技術。

雖然數據庫鏡像可以解決故障轉移集共享存儲存在單點失效威脅、依賴于特殊硬件等一系列的問題,但是數據庫鏡像最大的問題就是故障轉移路徑過短。對于大中型企業來說,僅有兩個節點的故障轉移路徑有些不足。因此通過增加一個故障轉移集群作爲數據庫鏡像的鏡像節點就可以解決了數據庫鏡像故障轉移路徑過短的問題。

上面這種解決方案當主體服務器失效後,數據庫鏡像會將啓動鏡像節點,而由于鏡像節點是由一個故障轉移集群承擔的,因此當鏡像節點中的一個節點失效後還有一個後備節點,因此還可以有一個後備節點承擔。

其實故障轉移集群和數據庫鏡像是各有利弊,因此這兩種技術融合在一起後的解決方案不僅僅是上面這一種,下面就給出另外一種解決方案的示意圖:

細心的讀者可能會發現,方案二種沒有了見證節點,這意味著從主集群切換到鏡像集群需要手動完成。那麽爲什麽這種解決方案中沒有了見證節點呢?

因爲數據庫鏡像和故障轉移集群都擁有自動故障轉移的特性,如果兩種技術的自動切換都生效的話,那麽在主體集群的活動節點失效後就會有兩個節點同時試圖生效——主體集群的後備節點和鏡像集群的活動節點,那麽結果就只有一個,數據庫鏡像會話失敗。

遠程故障轉移集群

對于某些跨地區甚至是跨洲的大型集團來說,站點失效這個困擾會逐漸進入IT主管和DBA的腦海中。

不過遠程故障轉移集群就不僅僅是SQL Server一個人就能完成的了,這個方案要依賴于SQL Server,Windows Server這些基礎軟件,還要依賴于存儲設備、交換機、服務器這些硬件。

因爲在遠程故障轉移集群中,共享儲存不再存在于一個數據中心,而是可能相距數十公裏,甚至數千公裏,因此中長距的底層存儲同步往往是這一解決方案的關鍵。對于中長距的底層存儲同步,通常分爲兩種,一種是在30公裏內的,通過單模光纖可以實現兩個數據中心存儲設備間的同步複制,而另外一種則是在30公裏之外了,而這種情況通常都是通過租用ICP的線路來實現兩地間的異步複制。

聽上去好像很複雜,不過不用擔心,EMC這樣的廠商有非常成熟的硬件設備以及相關軟件。這就是爲什麽在SQL Server的Always On中會出現EMC這樣第三方廠商名字的原因。

遠程故障轉移集群的替代方案

哦,天哪!我們討論的解決方案似乎越來越貴。我可不希望這樣結束。

其實對于遠程故障轉移集群來說,主要解決的問題是站點失效的問題,因此單純使用SQL Server的功能也可以解決這個問題。盡管沒有基于硬件的那麽高效和穩定。

那麽怎麽構建一個相對廉價的遠程容災方案呢?我們的答案是故障轉移集群+日志傳送/複制。在不提到這兩項技術的話,他們兩個一定會有意見的。

日志傳送依賴于日志備份以及還原來實現數據同步的,而複制呢,除了日志外多了一個快照(注意:複制中使用日志的方式與日志傳送是不一樣的)。因此我們只要確保主服務器的日志能夠以一個合理的頻率傳送給遠端的後備服務器,我們就可以提供一定程度上遠程容災能力了。

可是在SQL Server 2005之前,複制和日志傳送都有一些小問題,日志傳送是依賴于日志備份作業、日志傳送作業和日志還原作業,因此日志傳送無法做到連續性,他的嘴短同步間隔是一分鍾,無法再短了。事務複制盡管能做連續,但是事務複制有主從之分,如果是多站點這項技術會嚴重限制後備服務器的自治能力。

不過從SQL Server 2005開始,事務複制有了一種新的模式,叫做對等事務複制。對等事務複制平等看待參與複制的所有節點,而取消了主從之分。這就給我們的多站點數據服務規劃指出了一條新的道路。

不過大家在這張有些誇張的圖裏面也許可以看出些端倪。通過對等事務複制,我們確實可以設計出一個非常複雜的數據複制拓撲,利用高速/低速線路,優質/常規線路,我們可以在分布于多個站點的服務器之間構建出一個複制拓撲。說上面這張圖是開玩笑,原因是通常複制拓撲不會這麽混亂,但是對等複制一定可以制成這張圖上出現的服務器數量,關鍵是要良好規劃和設計。

算了,給張清楚點的吧。這是一個比較真實地對等複制拓撲,我們有兩個站點。站點內擁有高速的鏈接,而站點間則是相對低速的租用鏈路。A、B、C分別是三個應用的數據庫,A和C是本地性應用,因此僅在單個站點內進行了複制,保證其容災能力,而B是一個集團性的應用,爲了確保其數據的可用性,因此在站點內和站點間分別實現了複制冗余,同時站點A和站點B可以互不幹擾對數據的使用(當然這要依賴于數據庫的設計和對等複制鏈路的配置)。

SQL Server 2008在對等複制方面也有一個小小的改進,那就是沖突檢測。在SQL Server 2005的對等事務複制中,沖突是一個非常頭疼的事情,因此才會要求非常嚴格的數據訪問隔離設計。SQL Server 2008會在發生沖突的時候暫停複制,既保證了兩個站點間的正常數據訪問,也保證了在數據沖突時不會錯誤覆蓋正確的數據版本。

結束語

其實SQL Server的可用性和數據應用的可用性完全是兩個層面的事情,SQL Server僅僅是數據應用中的一個組成部分,因此如何達到真正的系統可用性,還要考慮更多的問題,通訊(交換機、路由器之類)、網絡服務(DNS、DHCP之類)、操作系統、應用服務(IIS、中間件服務器),還有很多很多的問題。

美國人遭遇了911,我們遭遇了512,除了沈重的傷痛之外也留給我們許多需要思考的問題。盡管對于很多IT來說,911和512似乎很遙遠,不過我們也討論到了IT系統需要面對的不僅僅是這些巨大的災難,還有飓風、火災、硬件故障、軟件缺陷、人爲破壞,甚至是例行維護。因此規劃和實施有效的可用性方案算是未雨綢缪,當遇到真正的突發事件時,才能避免花費成百數千倍的代價去彌補。

了解SQL Server 2008的新壓縮特性
從SQL Server 2005開始,在企業版和開發版中增加了一種叫做vardecimal的新存儲格式,這個表級的選項會影響到decimal和numeric字段。當對值的精度要求低于字段可用精度,如在一個decimal(18,9)類型的字段中存儲1.5這個...查看完整版>>了解SQL Server 2008的新壓縮特性
 
SQL Server 2008實現高可用性
高可用性—Always On 技術SQL Server 技術文章作者: Geoff Allix (內容主管)技術審查: Michael Raheem項目編輯:Joanne Hodgins發布日期:2007年11月適用産品:SQL Server 2008摘要:Microsoft® SQL Server&re...查看完整版>>SQL Server 2008實現高可用性
 
C#列出局域網中可用SQL Server服務器(續)
上一篇文章展示了使用COM對象如何列出局域網中的 SQL Server服務器信息,後來還發現在.Net中有現成的類可用,而不需要使用不太熟悉的COM對象了,這樣豈不是更好?下面我把代碼展示給大家:using System;using System...查看完整版>>C#列出局域網中可用SQL Server服務器(續)
 
C#列出局域網中可用SQL Server服務器
SQLDMO(SQL Distributed Management Objects,SQL分布式管理對象)封裝了Microsoft SQL Server數據庫中的對象。SQLDMO是Microsoft SQL Server中企業管理器所使用的應用程序接口,所以它可以執行很多功能,其中當然也包...查看完整版>>C#列出局域網中可用SQL Server服務器
 
深入 WIN2000注冊表 (15) SQL Server
深入 WIN2000注冊表 (15) SQL Server 深入 WIN2000注冊表 (15) SQL Server SQL Server簡介SQL Server是M i c r o s o f t向關系數據庫管理系統(Relational Database Management System,R D B M S )市場...查看完整版>>深入 WIN2000注冊表 (15) SQL Server
 
深入探索MS SQL Server 2000網絡連接的安全問題
下面我們要說的,並不是SQL Server存在的unicode編碼漏洞全攻略-6怎樣利用Perl CGI和LB5K的缺陷攻占遠程服務器LB5000 存在Cookie 變量未過濾漏洞Windows 2000緩沖區溢出入門DeleGate跨站腳本可執行漏洞 unicode編碼漏...查看完整版>>深入探索MS SQL Server 2000網絡連接的安全問題
 
深入探索MS SQL Server 2000網絡連接的安全問題
下面我們要說的,並不是SQL Server存在的漏洞,而只是一些安全缺陷,存在一些問題,當然這些問題是SQL Server一産生的時候就存在的。1、MS SQL Server的密碼明文傳輸缺陷 很倒黴,我沒有在微軟發布SQL Server的時候...查看完整版>>深入探索MS SQL Server 2000網絡連接的安全問題
 
SQL Server大型服務器:伸縮性、可用性與易管理性
摘要 Microsoft SQL Server已經發展爲能夠支持巨型數據庫和應用程序,其中包括可供數百萬人使用的數吉字節數據庫。SQL Server通過在對稱多處理器(SMP)系統上支持向上擴展(允許用戶添加處理器、內存、磁盤、網絡帶...查看完整版>>SQL Server大型服務器:伸縮性、可用性與易管理性
 
深入SQL SERVER 2000的內存管理機制(三)
深入SQL SERVER 2000的內存管理機制(三) 內存區域SQL Server是分2塊區域來組織內存分配,分別是Bpool (緩沖池區)和MemToLeave (內存釋放區),如果你使用AWE內存,那麽實際上有第三個區:Windows AWE支持的高于3G...查看完整版>>深入SQL SERVER 2000的內存管理機制(三)
 
 
回到王朝網路移動版首頁