自從SQL Server 2005以來,微軟已經提供了多種高可用性技術來減少宕機時間和增加對業務資料的保護,而隨著SQL Server 2008,SQL Server 2008 R2,SQL Server 2012的不斷髮布,SQL Server中已經存在了滿足不同情境的多種高可用性技術。
在文章開始之前,我首先簡單概述一下以什麼來決定使用哪一種高可用性技術。
依靠什麼來決定使用哪一種高可用性技術?
很多企業都需要他們的全部或部分資料高可用,比如說線上購物網站,線上商品資料庫必7*24小時線上,否則在競爭激烈的市場環境下,宕機時間就意味著流失客戶和收入。再比如說,一個依賴於SQL Server的話務中心,如果資料庫宕機,則所有的呼叫員都只能坐在那裡回複客戶“對不起,系統故障”,這也是很難接受的。
當然,在一個理想的世界中,所有的關鍵資料都會時刻線上,但在現實世界中,會存在各種各樣的原因導致資料庫不可用,由於無法預估災難出現的時間和形式,需要提前採取措施來預防各種突發情況,因此SQL Server提供了多種高可用性技術,這些技術主要包括:叢集、複製、鏡像、記錄傳送、AlwaysOn可用性群組以及其它諸如檔案組備份還原、線上重建索引等單一實例的高可用性技術。使用何種高可用性技術並不是隨意挑一個熟悉技術直接使用,而是要基於業務和技術綜合考慮。因為沒有一項單獨的技術可以實現所有的功能。如何根據具體的業務和預算採用這些技術,就是所謂的高可用性策略。
在設計高可用性策略時應該首先考慮下述因素:
RTO(Recovery Time Objective)-也就是恢復目標,意味著允許多少宕機時間,通常用幾個9表示,比如說99.999%的可用性意味著每年的宕機時間不超過5分鐘、99.99%的可用性意味著每年的宕機時間不超過52.5分鐘、99.9%的可用性意味著每年的宕機時間不超過8.75小時。值得注意的是,RTO的計算方法要考慮系統是24*365,還是僅僅是上午6點到下午9點等。您還需要注意是否維護視窗的時間在算在宕機時間之內,如果允許在維護視窗時間進行資料庫維護和打補丁,則更容易實現更高的可用性。
RPO(Recovery Point Objective)-也就是復原點目標,意味著允許多少資料損失。通常只要做好備份,可以比較容易的實現零資料損失。但當災難發生時,取決於資料庫損壞的程度,從備份恢複資料所需要的時間會導致資料庫不可用,這會影響RTO的實現。一個早期比較著名的例子是某歐美的銀行系統,只考慮的RPO,系統裡只存在了完整備份和記錄備份,每3個月一次完整備份,每15分鐘一次記錄備份,當災難發生時,只能夠通過完整備份和記錄備份來恢複資料,因此雖然沒有資料丟失,但由於恢複資料花了整整兩天時間,造成銀行系統2天時間不可用,因此流失了大量客戶。另外一個相反的例子是國內某線上視頻網站,使用SQL Server作為後端關聯式資料庫,前端使用了No-SQL,定期將No-SQL的資料匯入關聯式資料庫作為備份,當災難發生時最多允許丟失一天的資料,但是要保證高可用性。
預算 –RTO和RPO統稱為SLA(服務水平協議),設計高可用性策略時,要根據業務來衡量滿足何種程度的SLA,這要取決於預算以及衡量不同SLA在故障時所造成的損失。SLA並不是越高越好,而是要基於業務需求,通常來說,在有限的預算之下很難實現很高的SLA,並且即使通過複雜的架構實現較高的SLA,複雜的架構也意味著高營運成本,因此需要在預算範圍之內選擇合適的技術來滿足SLA。
因此,綜合來說,可以通過幾個接單的問題確定高可用性的大架構:
股東能夠接受的宕機時間是多少?
管理員能夠接受的宕機時間是多少?
為高可用性方案提供的預算是多少?
宕機導致的損失是每小時是多少錢?
冷備份、暖備份和熱備份
根據主機和備機之間同步資料的程度,備份可以分為三種情況,分別為冷備份、暖備份和熱備份。
冷備份:也就是所謂的備份,待命伺服器被配置用於接受主伺服器的資料,當出故障時,手動將資料還原到主要資料庫,或是重新設定程式的連接字串或許可權來使得備份資料庫上線。
暖備份:主伺服器資料會不停的將記錄傳送到待命伺服器(間隔不定,可以是15分鐘,30分鐘,1分鐘等等),在這方式下,主伺服器到備份伺服器通常是非同步更新,所以不能保證主伺服器和備份伺服器資料一致。此外,該方案通常不會實現自動故障監測和容錯移轉。
熱備份:主伺服器的資料自動在備份伺服器上進行同步,大多數情況下都會包含自動的故障監測和容錯移轉,並且能夠保證主伺服器和備份伺服器的資料一致性。
隨著冷備份到暖備份到熱備份,成本會直線上升。
SQL Server中所支援的高可用特性
SQL Server中所支援的高可用性功能與版本息息相關,企業版支援所有的高可用性功能,這些功能包括:
l 容錯移轉叢集
l 資料庫鏡像
l 交易記錄傳送
l 資料庫快照集
l 高可用性升級
l 熱載入記憶體
l 線上索引操作
l 資料庫部分線上(只還原了主檔案組或主檔案組和額外的NDF檔案)
具體何種版本支援哪些高可用特性,請參閱:http://msdn.microsoft.com/zh-cn/library/cc645993.aspx,值得注意的是免費的Express版本可以作為資料庫鏡像的見證伺服器,從而節省了成本。