高可用性—Always On 技術
SQL Server 技術文章
作者: Geoff Allix (內容主管)
技術審查: Michael Raheem
項目編輯:Joanne Hodgins
發布日期:2007年11月
適用產品:SQL Server 2008
摘要:Microsoft® SQL Server® 2008 通過提供各種高可用性解決方案,縮短了業務關鍵型數據庫的停機時間。這些解決方案使用戶和企業職員每天24小時、每周7天都可以訪問數據,且仍能提供經濟有效的高性能。SQL Server 2008 中的 Always On 功能增強了對系統和硬件的保護,減少了計劃中或計劃外停機的次數和恢復時間,並減少了由於大量用戶同時訪問同一數據庫而導致的衝突。
版權
這是一份預備文檔,在本文檔中所述軟件的最終商業版本發布之前,該文檔的內容可能會發生重大變化。
本文檔中提供的信息代表了 Microsoft Corporation 當前(軟件發布之前)對所討論問題持有的觀點。因為 Microsoft 必須響應不斷變化的市場條件,所以其當前的觀點不應被解釋為是一種承諾,軟件發布之後,Microsoft 不能保證現在所提供的所有信息準確無誤。
這份白皮書僅供參考。 Microsoft 對本文檔中提供的信息不做任何擔保、明示、暗示或法律方面的承諾。
用戶有責任遵守所有適用的版權法。在版權權利限制下,未經 Microsoft 公司明確的書面許可,本文檔的任何內容不能被復制、存儲或放進檢索系統,或者以任何形式或任何手段(電子、機械、復印、錄制或其他)或為達到任何目的進行轉換。
Microsoft 對本文涵蓋的主題內容可能擁有專利、專利申請、商標、版權或其他知識產權。沒有來自 Microsoft 的任何書面許可協議的明確表示,本文不賦予您對這些專利、商標、版權或其他知識產權的任何許可。
除非另有說明,否則本文提及的示例公司、組織、產品、域名、電子郵件地址、徽標、人物、地點和事件皆屬虛構,與任何真實的公司、組織、產品、域名、電子郵件地址、徽標、個人、地點或事件無關。
Ó 2007 Microsoft Corporation。保留所有權利。
Microsoft、Windows、Office 和 SQL Server 是 Microsoft Corporation 在美國和/或其他國家/地區的商標或註冊商標。
本文中提及的真實的公司名稱和產品名稱可能是其各自所有者的商標。
目錄
簡介 1
可用性應用場景 1
提高可用性 2
數據庫鏡像 2
日誌傳送 2
故障轉移群集 3
地理分散故障轉移群集 3
對等復制 3
縮短停機時間 4
快速數據庫恢復 4
備份和還原 4
數據頁上的校驗和 5
在線索引操作 5
在線、段落和頁級還原 5
部分數據可用性 6
快照隔離 6
動態配置 6
增強的可管理性 6
數據庫快照 6
表和索引分區 7
備份和還原 7
專用管理員連接 7
資源調控器 7
結束語 7
導言
任何應用程序的停機時間都會給企業帶來負面影響,導致收入損失、客戶滿意度下降並損害企業的信譽。許多數據庫應用程序,尤其是企業業務應用程序,要求系統停機時間盡可能縮短。系統停機時間的產生有多種原因,如人為失誤、自然災害、硬件或軟件故障以及應用程序升級。Microsoft SQL Server 2008 Always On 技術提供了各種選項,可將停機時間降至最低,且保持適當級別的應用程序可用性。
可用性應用場景
對許多業務而言,獲得高可用性是一種常見需求。解決方案是否適用於特定的應用場景取決於很多因素,在一種場合下表現最佳的解決方案在另一種場合下不一定是最適合的。例如如下應用場景:
基於 Internet 的運動商品零售商想為其客戶提供近似連續的可用性。Web 服務器已加到 Web 場中,但數據庫故障會產生錯誤,這些情形大多數時候會使公司失去客戶。該公司已經擁有經核準的標準服務器版本,希望能夠避免花費大量資金、更改基礎結構或重寫應用程序。
獵頭公司很關註其用戶使用客戶數據庫時遇到的錯誤。雖然沒有必要立即執行故障恢復,但該公司還是希望擁有一臺可以快速在線獲得的溫備用服務器。
保險公司想為其索賠數據庫提供近似連續的可用性。該系統的性能一定不能受到影響,而且當前存儲在文件系統中用以支持索賠的文檔也必須可用。
管理培訓公司有三個站點,每個站點都有一支銷售團隊。銷售團隊將各自站點的記錄輸入 Orders 數據庫中。為提高性能,要求每個站點能夠在本地服務器上訪問公司的所有訂單。當出現故障時,為提供可用性,每個站點都必須能夠切換到另一個站點的服務器。
會計公司希望在出現故障時(如自然災害)也能為其客戶提供可用性。信息不一定要立即可用,但應該在數小時而不是數天內可供使用。該公司還想每天都保存數據庫中的信息,以滿足法規要求。拷貝的數據不需要立即可用,但必須在許多年內都可供使用。
玩具制造商想根據銷售數據庫編制報告,但由於該數據庫一直處於使用狀態,因此編制報告的過程通常會被當前正在執行的交易打斷。該公司希望能夠針對未提交的交易編制報告,但這會產生不正確的結果,因為有些交易並不完整。
房地產公司想在用戶操作錯誤時保護系統,希望能夠恢復前一天的記錄值。該公司還想能夠根據前一天的數據編制報告,因為它們不會受到當天交易的影響。在理想情況下,該公司希望實施一種磁盤開銷最小的解決方案。
根據各種可用性要求,企業需要一種能為高可用性解決方案提供靈活選項的數據庫平臺。本白皮書中,可以看到 SQL Server 2008 Always On 技術如何為高可用性提供靈活選項,以使企業能夠根據特殊需求實施最佳解決方案。
提高可用性
許多數據庫應用程序都是任務關鍵型的,因此要求停機時間盡可能短,並在發生災難時能夠迅速恢復。SQL Server 2008 提供了各種 Always On 技術,可以使停機時間減至最少及獲得適當級別的可用性。
數據庫鏡像
「Database Mirroring(數據庫鏡像)」是一種可提高數據庫可用性的技術。當主體數據庫發生更改時,這些更改也將自動應用到鏡像數據庫中。當主體服務器發生故障時,客戶機應用程序可自動重定向到鏡像服務器,而應用程序無需進行任何改動。
可以對 Database Mirroring 進行配置,以對鏡像服務器實時應用更改,稱為「同步」;或者近乎實時應用更改,稱為「異步」,因此可以在系統中指定保護級別和性能開銷。
有了 SQL Server 2008 Enterprise Edition 之後,鏡像保護就可擴展到數據頁。如果發現主體服務器或鏡像服務器上的數據頁損壞,將從夥伴服務器上檢索對應的數據頁,而數據操作也會平穩地繼續執行。SQL Server 2008 還改善了數據庫鏡像,它將壓縮主體服務器與鏡像服務器之間的數據流,而且在手動執行故障恢復時,無需重啟數據庫。
在基於 Internet 的運動商品公司的案例中,當出現服務器、數據庫或頁級故障時,Database Mirroring 將提供非常迅速的故障恢復能力。雖然必須購買新服務器,但無需重寫應用程序,備用服務器是標準設備,不需要 SQL Server 許可證。
日誌傳送
「日誌傳送」是一種高可用性技術,它提供了溫備用服務器。備份是在主服務器上執行的,而還原是在一個或多個輔助服務器上執行的。然後,「日誌傳送」將定期日誌備份應用於輔助服務器。雖然數據庫鏡像只能有一臺鏡像服務器,但「日誌傳送」可以有許多輔助服務器,這可以提高保護級別。
「日誌傳送」是按照時間表執行的,因此在主服務器上的數據更改與這些更改傳輸到輔助服務器上之間有時間延遲。這種延遲會導致數據損失,但在許多應用場景下,這些延遲可用作還原用戶錯誤的一種方法,因為可以延遲日誌數據在輔助服務器上的應用(從而保留輔助服務器上的原始數據)。
為降低主服務器的工作負荷,輔助服務器可用作只讀報告服務器,但在應用日誌備份時無法運行報告。
在獵頭公司的案例中,可利用日誌備份與備用服務器執行還原之間的延遲應用「日誌傳送」。這可以扭轉由用戶導致的錯誤情形,因為如果主服務器發生故障,可以直接應用日誌以減少數據損失。
故障轉移群集
「故障轉移群集」是一種 Windows 功能,可對整個服務器提供保護,而不只是保護數據庫。多臺服務器(稱為「節點」)共享磁盤陣列,因此如果一個節點發生故障,則可在集群中的另一個節點上啟動它的服務。該解決方案可以防止任何數據損失,並提供自動的客戶機重定向服務,但從主服務器到輔助服務器的故障恢復操作沒有數據庫鏡像那樣快,而且需要專門的硬件。
Windows Server 2008 擴展了舊版 Windows 的群集功能,它降低了對硬件和基礎結構的要求,且在一個群集中支持16個節點。此外,由於不要求所有節點都駐留於同一個子網中並支持 OR 依賴關系(例如,當兩個 IP 地址資源中的任何一個可用時,可確保網絡名資源也可用),因而強化了群集功能。從總體上講,在 Windows Server 2008 中可以更容易地設置和管理群集,而引進的群集驗證工具有助於確保群集解決方案有足夠的硬件資源。通過利用 Windows Server 2008 中的群集增強功能,SQL Server 2008 為整個 SQL Server 實例提供了健壯的高可用性解決方案。SQL Server 2008 還改善了舊版的群集功能,它不要求每個 SQL Server 實例都要有一個盤符,這提高了群集解決方案可以支持的實例數量。
在保險公司案例中,「故障轉移群集」可用於提供近似連續的可用性。「故障轉移群集」不會影響系統性能,因為它是一種服務器級解決方案,能夠為服務器上的其他資源提供可用性。如果擔心共享磁盤陣列不能提供足夠的冗余,則可使用「地理分散群集」。
地理分散故障轉移群集
「地理分散故障轉移群集」按照認證的 Microsoft Geographically Dispersed Cluster Services 配置提供服務器級冗余,該配置要求每個站點擁有一個或多個存儲陣列。如果站點、服務器節點或磁盤發生故障,系統和磁盤的完整冗余將使故障轉移群集能夠處理另一站點上的後續活動。該配置可避免共享磁盤陣列發生故障的風險,這將阻止標準群集配置發揮作用。
對等復制
「對等復制」使多個數據庫能夠相互復制。可以對任何數據庫執行更改,而且能以接近實時的方式將這些更改應用於復制拓撲中的其他節點。應用程序的設計要求是,如果主體服務器不可用,應用程序必須能夠連接拓撲中的其他節點。
SQL Server 2008 強化了對等復制功能,它可在復制解決方案中增加節點,同時保持復制流程處於在線狀態。在舊版的 SQL Server 中,要增加新節點,必須在離線狀態下執行復制流程。此外,SQL Server 2008 可以直接利用圖形化 Topology Viewer 對對等復制進行設置、監督和管理。SQL Server 2008 還引進了衝突檢測機制,可以防止多個復制節點更新同一行時產生的偶然衝突。
在管理培訓公司的案例中,對等復制可以從本地訪問整個訂單數據庫,如果另一站點的數據庫不可用,則每個站點都可以用於故障恢復。
縮短停機時間
系統停機時間會威脅到任何企業的成功。系統停機時間可能是意外產生的,也可能是為維護任務而預先安排的,例如重建索引或執行應用程序或系統升級。
要使系統避免產生意外停機很困難,因為對於企業而言,意外的硬件或網絡故障、人為失誤、自然災害或盜竊都可能會帶來災難性後果。SQL Server Always On 提供了可從計劃外停機狀態中迅速恢復的技術。此外,通過適當地實施 Always On 技術,任務關鍵型應用程序平穩運行所需的系統維護和操作流程將使停機時間降至最低。
快速數據庫恢復
SQL Server 2008 Enterprise Edition Database Engine 能夠在崩潰恢復和數據庫鏡像故障轉移期間提供快速恢復。快速恢復功能使數據庫在恢復流程的還原階段即可使用,它在還原操作期間、數據庫頁校驗以及備份媒體鏡像期間均可提供部分可用性。通過支持快速恢復,SQL Server 2008 將在最短的時間內使數據庫處於在線狀態,因此用戶很快就能使用數據庫,這要快於如下方法:等整個恢復流程全部完成後,用戶和應用程序才可以執行連接。
備份和還原
在高可用性解決方案中,備份至關重要,它要定期提供數據快照,並在出現大範圍故障或缺少其他高可用性解決方案時,作為數據源用以還原數據。
SQL Server 的備份媒體鏡像功能使用戶能夠將數據庫通過鏡像備份復制到多個備份設備上,當媒體出現故障或備份設備丟失時,這將極大提高備份的可靠性。SQL Server 2008 支持在磁盤和磁帶上執行鏡像備份,但所用的設備必須類似,以避免產生設備不匹配錯誤的風險。備份鏡像集中的所有設備在備份過程中都必須可用,但數據庫可從鏡像集中的任何單獨備份中還原。要利用 Transact-SQL 執行鏡像備份,必須使用 BACKUP 命令的 MIRROR TO 子句,如下例所示。
BACKUP DATABASE AdventureWorks
TO TAPE = '\.\tape0', TAPE = '\.\tape1'
MIRROR TO TAPE = '\.\tape2', TAPE = '\.\tape3'
WITH
FORMAT,
MEDIANAME = 'AdventureWorksSet1';
GO
SQL Server 的另一個備份可靠性特性是,在備份操作期間可以生成校驗和,然後校驗和可用於驗證還原後的數據庫。
SQL Server 2008 支持備份壓縮,最多可使備份大小減小50%。容量的減小使用戶能夠更頻繁地備份數據,同時也會縮短還原時間。在 BACKUP 命令中,備份壓縮可設為 ON 或 OFF,並且可以利用 sp_configure 定義默認的壓縮值(on 或 off),以確定在執行 BACKUP 命令時,是否需要制定壓縮選項。
數據頁上的校驗和
「校驗和」可比較寫入磁盤的值與後續讀取的值。如果這些值不一致,則該頁將被標記為 suspect(可疑),然後要麽手動還原,要麽利用 SQL Server 2008 自動從夥伴服務器中還原。
在線索引操作
可用性會受到標準維護操作以及故障的影響。在早期 SQL Server 版本中,索引維護會使受影響的數據變為不可用,但從SQL Server 2005 開始,數據在「在線索引操作」期間均可保持可用性,這些可用的操作包括創建、放置或重建索引。
在執行索引維護時,「在線索引操作」可提高所有系統的可用性,因此也能提高職員的工作效率,並改善客戶使用系統時的體驗。
在線、段落和頁級還原
SQL Server 2008 Enterprise Edition 支持「在線還原」,使用戶能夠訪問數據庫被還原的部分,即使數據庫的其他部分還不可用,因此這會提高恢復速度、縮短停機時間和提高可用性。此外,可以利用「段落還原」策略還原各階段的數據庫。例如,可以還原包含當前活動數據的文件組,並且可先使數據庫處於在線狀態,然後還原包含較舊的歸檔數據的文件組。在災難恢復應用場景下,段落還原策略可縮短任務關鍵型應用程序處於離線狀態的時間。
由於少量數據頁發生損壞而需要恢復數據庫時,SQL Server 2008 支持頁級還原操作。用戶可從許多源數據庫的可疑頁中識別頁 ID,包括 msdb 數據庫中的 suspect_pages 表、SQL Server 錯誤日誌以及 DBCC CHECKDB 命令。識別出任何有可能損壞的數據頁之後,就可以在 RESTORE 語句的 PAGE 從句中指定頁 ID,從而還原數據頁。從備份中還原單張頁的能力極大地縮短由於數據庫損壞導致的停機時間。
部分數據可用性
有了「部分數據可用性」功能,即使數據庫的一部分由於隔離硬件或磁盤故障而遭破壞,數據庫也能維持在線狀態和可用性。如果輔助的非主要數據文件損壞,則數據庫未損壞的部分仍將保持在線狀態和可用性。因此,即使整個系統不可用,但有些客戶和職員仍可訪問數據,這會減輕由問題導致的後果,同時另一個可用性解決方案將進入在線狀態。
快照隔離
在SQL Server的早期版本中修改數據時,被修改的數據將處於鎖定狀態,因此其他應用程序和用戶就無法使用這些數據。替代方法是讀取數據的當前狀態(即使這些值尚未被提交)或者當交易未成功完成時回滾數據。
「快照隔離」功能擴展了 SQL Server 2008 中的鎖定框架,它使應用程序能夠在發生任何數據修改之前查看值。這可防止應用程序被鎖定,同時仍將提供真正已提交的數據。例如,在本文開頭介紹的玩具制造商案例中,「快照隔離」功能使報告能夠運行,並提供精確的交易結果。「快照隔離」使報告更及時、更精確。
動態配置
「動態配置」是 SQL Server Always On 技術之一,利用該技術可以更好地訪問硬件特性,如執行熱升級,同時系統仍可運行。如果硬件支持「熱添加內存」,則在增加系統內存時就不會產生中斷,而且 SQL Server 將通過動態內存或者故障移動群集的動態
「地址窗口化擴展插件(AWE)」自動使用這些內存。
SQL Server 2008 還支持「熱添加CPU」,因此可為受支持的硬件添加處理器,而且不會使操作中斷。
對於任何需要增加處理器或內存資源的系統而言,「動態配置」功能可縮短停機時間,並提高職員工作效率和客戶滿意度。
增強的可管理性
SQL Server 2008 針對簡化恢復操作提供了強大且高效的管理工具,它提供了用於調查、監督以及恢復企業中受損數據的各種工具。
數據庫快照
無論是由維護操作還是由終端用戶交互導致,人為失誤是導致停機的最常見原因。SQL Server Always On 提供了「數據庫快照」功能,可用於快速調查人為失誤並從之恢復。「數據庫快照」就是創建快照時數據庫的只讀、靜態視圖。「數據庫快照」也可用於編制報告,而且不影響源數據庫的可用性。
在房地產公司的應用場景中,「數據庫快照」提供了一種將當前值向前一天回滾的方法,還為前一天的數據提供了只讀的報告解決方案。由於「數據庫快照」僅存儲將應用於活動數據庫的更改數據,因此它們很節省存儲空間。
表和索引分區
「表和索引分區」功能可提高大表的可用性和可管理性,它將大表劃分為較小的、更易管理的單元,這種單元稱為「分區」。可以獨立訪問各個分區,因此減輕了 I/O 密集活動產生的影響,如數據加載、備份和還原、索引重建以及索引碎片整理。
SQL Server 2008 使行鎖數和頁鎖數升級為分區鎖數,因此提高了分區表的並行性。這種升級減少了應用的鎖數,因此加快了跨越查詢。在舊版本中,行鎖數和頁鎖數只能升級為表鎖數,這會導致應用不必要的大鎖,而且會妨礙其他用戶。
對於包含大表和大量用戶的任何系統而言,提高並行性並減少競爭可改善可用性,而且能夠提高職員工作效率和客戶滿意度。
備份和還原
除了「段落還原」和「在線還原」技術外,備份和還原操作還在恢復方面提供了更多靈活性。SQL Server 使用戶能夠還原只讀數據庫文件組,而且無需應用事務日誌。它還允許同時執行數據庫備份和事務日誌備份。
專用管理員連接
「專用管理員連接(DAC)」是一種與服務器之間的高優先級連接,當服務器似乎要停機以及不接受新連接時,它有助於排除故障。
資源調控器
在使用頻繁的數據庫中,不同的工作負荷可能會為了可用的系統資源而展開競爭,例如 CPU 線程和內存。在某些情形下,這種資源競爭可能會使任務關鍵型工作負荷受到數據庫中其他活動的不良影響。SQL Server 2008 提供「資源調控器」,它根據登錄、應用程序和其他因素,為不同的工作負荷指定優先級,從而能夠主動管理工作負荷資源利用情況。為工作負荷指定優先級的能力使性能更具可預測性,有助於確保任務關鍵型應用程序總有數據庫服務器資源可以使用。
結束語
當客戶或職員無法使用企業中的任何關鍵系統時,這都會立即影響到企業的利潤率。可用性問題和需求千差萬別,一種解決方案無法解決所有的問題。
SQL Server 2008 提供了多種解決方案以改善可用性,這種可用性至少在性能和多樣性方面能夠媲美主流數據庫廠商提供的任何類似產品,而且 SQL Server 2008 繼續在可管理性和資金價值方面居於領先地位。
獲取更多信息:
本文對您有幫助嗎?請告訴我們您的感受。如果從1(差)到5(極好)的分值中進行選擇,您認為本文應該打幾分?原因是什麽?例如:
您是否認為由於提供了很好的例子、精美的屏幕截圖、清晰的文字描述或其他原因而應該給它高分?
您是否認為由於用例不當、屏幕截圖模糊、文字描述含混不清而應該給它低分?
您的意見將有助於我們改善所發布白皮書的質量。提交意見。