001.SQLServer高可用簡介

一 SQLServer高可用集羣相關概念

1.1 Windows故障轉移羣集

Windows故障轉移羣集是由多個服務器組成的共同提供某高可用服務,該服務用於防止單臺服務器故障致使服務失效。故障轉移羣集是一種高可用性的基礎結構層,由多臺計算機組成,每臺計算機至關於一個冗餘節點,整個羣集系統容許某部分節點掉線、故障或損壞而不影響整個系統的正常運做。一臺服務器接管發生故障的服務器的過程一般稱爲"故障轉移"。

1.2 集羣節點

運行着相同Microsoft 羣集服務 (MSCS)的一組(相關)服務器。每一個服務器也被稱爲「節點」(Node),每一個節點上都運行着Microsoft 羣集服務 (MSCS)。這些節點有相同的軟硬件配置,而且具備共享的磁盤(Shared Array)。

1.3 共享的磁盤(Shared Array)

集羣中的一塊邏輯磁盤,或一塊磁盤上的一個mountpoint,對於一個SQL Server羣集實例,存放着數據庫的全部數據文件和事務日誌文件(MDF,NDF和LDF),SQL Server和SQLServer Agent的日誌文件(ERRORLOG),以及一些其餘的文件和目錄,必須設置共享磁盤和SQLServer資源在一個資源組裏,這樣就保證了運行SQL Server服務的節點必定能訪問到共享磁盤裏的數據。
事實上SQL Server資源和共享磁盤資源是具備「依賴」關係的。也就是說在磁盤資源沒法在某節點正常運行的時候,SQL Server資源在該節點也沒法上線運行。
注意:一個共享磁盤資源只能屬於一個SQLServer實例(事實上,在安裝SQL Server羣集實例時是SQLServer安裝在一個已經被其餘SQL Server羣集實例使用的共享磁盤上的)。可是一個SQLServer羣集實例可使用多個共享磁盤。

1.4 私有網絡和公共網絡

"私有網絡"(private network),每一個節點上有一塊私有網卡,這些網卡經過網絡互相鏈接組成了私有網絡。節點之間經過私有網絡互相發送信號來感知彼此是否已經工做正常,這類信號被稱爲「心跳線」。一旦某服務器由於某種異常而沒法迴應信號,此時剩餘的節點就認爲這個節點已經「死了」,因而就把這個節點排除出當前羣集。
"公用網絡"(public network),用來被羣集外部的資源所使用的一個網絡。每一個節點上有一塊公共網卡,外部資源經過公用網卡來訪問這個節點。
注意:私有網卡和公共網卡在物理上能夠是一塊網卡,這種時候羣集就經過一個網絡來完成私有網絡和公共網絡的職責,這個網絡被稱其爲混合網絡(mixednetwork)。

1.5 SQLServer網絡名和SQL Server IP地址

SQL Server羣集並不使用Windows羣集的虛擬網絡名和虛擬IP地址來做爲應用程序訪問它的接口。在SQLServer的資源組裏有該SQL Server實例本身專用的虛擬網絡名和IP地址這兩個資源,它們提供了應用程序訪問SQL Server時使用的機器名或者IP地址。事實上,不管是Windows羣集仍是SQL Server羣集的虛擬機器名/IP,它們的資源類型都是相同的,只是它們一個服務於Windows虛擬服務器;一個服務於SQL Server羣集實例。

1.6 SQL Server故障轉移羣集

所謂的SQL Server故障轉移羣集,就是將SQLServer部署在Windows羣集中的多個節點上,而後組成一個虛擬的SQLServer實例。這樣SQL Server 實例依就像運行在單臺計算機同樣顯示在網絡中。不過它具備一種功能,即在當前運行SQLServer實例的節點不可用時,能夠在節點之間進行故障轉移,把SQL Server切換到工做正常的節點上去繼續爲應用程序提供服務。
實現這個功能,須要將SQL Server安裝成羣集模式,而不是單機模式。安裝的具體步驟,請參見本書的第一章。安裝成功之後,您就能夠看到本節所提到的各個管理界面了。

1.7 組員組和活躍節點

「資源組」就是由一個或者多個資源組成的組。全部的故障轉移都是以資源組爲單位發生的,在任什麼時候候,每一個資源組都僅屬於羣集中的一個節點,這個節點就是該資源組的「活躍節點」。因爲資源組裏的資源是一塊兒切換的,因此這些資源應該是彼此關聯,而且協同工做來提供某項服務。用戶應當儘可能避免把無關的資源加入到同一個資源組裏。能夠簡單地把資源組想象成在虛擬服務器上運行的一個個獨立的應用程序或者服務,而羣集技術爲這些應用程序或者服務提供了高可用的特性。

二 高可用策略

當前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的實現。

三 常見備份方式

根據主機和備機之間同步數據的程度,備份能夠分爲三種狀況,分別爲冷備份、暖備份和熱備份。

3.1 冷備份

冷備份也就是所謂的備份,備用服務器被配置用於接受主服務器的數據,當出故障時,手動將數據還原到主數據庫,或是從新配置程序的鏈接字符串或權限來使得備份數據庫上線。

3.2 暖備份

暖備份也就是主服務器數據會不停的將日誌傳送到備用服務器(間隔不定,能夠是15分鐘,30分鐘,1分鐘等等),在這方式下,主服務器到備份服務器一般是異步更新,因此不能保證主服務器和備份服務器數據一致。此外,該方案一般不會實現自動故障監測和故障轉移。

3.3 熱備份

熱備份也就是主服務器的數據自動在備份服務器上進行同步,大多數狀況下都會包含自動的故障監測和故障轉移,而且可以保證主服務器和備份服務器的數據一致性。
提示:隨着冷備份到暖備份到熱備份,成本會直線上升。

四 SQL Server高可用特性

4.1 特性簡介

SQL Server中所支持的高可用性功能與版本息息相關,企業版支持全部的高可用性功能,這些功能包括:
  1. 故障轉移集羣
  2. 數據庫鏡像
  3. 事務日誌傳送
  4. 數據庫快照
  5. 高可用性升級
  6. 熱加載內存
  7. 在線索引操做
  8. 數據庫部分在線(只還原了主文件組或主文件組和額外的NDF文件)
具體何種版本支持哪些高可用特性,請參閱:http://msdn.microsoft.com/zh-cn/library/cc645993.aspx,值得注意的是免費的Express版本能夠做爲數據庫鏡像的見證服務器,從而節省了成本。

4.2 故障轉移集羣

故障轉移集羣爲整個SQL Server實例提供高可用性支持,這意味着在集羣上某個節點的SQL Server實例發生了硬件錯誤、操做系統錯誤等會故障轉移到該集羣上的其它節點。經過多個服務器(節點)共享一個或多個磁盤來實現高可用性,故障轉移集羣在網絡中出現的方式就像單臺計算機同樣,可是具備高可用特性。
注意:因爲故障轉移集羣是基於共享磁盤,所以會存在磁盤單點故障,所以須要在磁盤層面部署SAN複製等額外的保護措施。最多見的故障轉移集羣是雙節點的故障轉移集羣,包括主主節點和主從節點。
缺點:輔助節點不可用,數據單點。

4.3 事務日誌傳送

事務日誌傳送提供了數據庫級別的高可用性保護。日誌傳送可用來維護相應生產數據庫(稱爲「主數據庫」)的一個或多個備用數據庫(稱爲「輔助數據庫」)。發生故障轉移以前,必須經過手動應用所有未還原的日誌備份來徹底更新輔助數據庫。日誌傳送具備支持多個備用數據庫的靈活性。若是須要多個備用數據庫,能夠單獨使用日誌傳送或將其做爲數據庫鏡像的補充。當這些解決方案一塊兒使用時,當前數據庫鏡像配置的主體數據庫同時也是當前日誌傳送配置的主數據庫。
事務日誌傳送可用於作冷備份和暖備份的方式。
缺點:日誌還原時不能讀取數據,嚴格意義上不屬於熱備份。

4.4 數據庫鏡像

數據庫鏡像其實是個軟件解決方案,一樣提供了數據庫級別的保護,可提供幾乎是瞬時的故障轉移,以提升數據庫的可用性。數據庫鏡像能夠用來維護相應生產數據庫(稱爲「主體數據庫」)的單個備用數據庫(或「鏡像數據庫」)。
由於鏡像數據庫一直處於還原狀態,但並不會恢復數據庫,所以沒法直接訪問鏡像數據庫。可是,爲了用於報表等只讀的負載,可建立鏡像數據庫的數據庫快照來間接地使用鏡像數據庫。數據庫快照爲客戶端提供了快照建立時對數據庫中數據的只讀訪問。每一個數據庫鏡像配置都涉及包含主體數據庫的「主體服務器」,而且還涉及包含鏡像數據庫的鏡像服務器。鏡像服務器不斷地使鏡像數據庫隨主體數據庫一塊兒更新。
    數據庫鏡像在高安全性模式下以同步操做運行,或在高性能模式下以異步操做運行。在高性能模式下,事務不須要等待鏡像服務器將日誌寫入磁盤即可提交,這樣可最大程度地提升性能。在高安全性模式下,已提交的事務將由夥伴雙方提交,但會延長事務滯後時間。數據庫鏡像的最簡單配置僅涉及主體服務器和鏡像服務器。在該配置中,若是主體服務器丟失,則該鏡像服務器能夠用做備用服務器,但可能會形成數據丟失。高安全性模式支持具備自動故障轉移功能的備用配置高安全性模式。這種配置涉及到稱爲「見證服務器」的第三方服務器實例,它可以使鏡像服務器用做熱備份服務器。從主體數據庫至鏡像數據庫的故障轉移一般要用幾秒鐘的時間。
數據庫鏡像可用於作暖備份和熱備份。
缺點:最多隻支持兩個節點,輔助節點可用性差。

4.5 複製

複製嚴格來講並不算是一個爲高可用性設計的功能,但的確能夠被應用於高可用性。複製提供了數據庫對象級別的保護。複製使用的是發佈-訂閱模式,即由主服務器(稱爲發佈服務器)向一個或多個輔助服務器或訂閱服務器發佈數據。複製可在這些服務器間提供實時的可用性和可伸縮性。它支持篩選,以便爲訂閱服務器提供數據子集,同時還支持分區更新。訂閱服務器處於聯機狀態,而且可用於報表或其餘功能,而無需進行查詢恢復。SQL Server 提供四種複製類型:快照複製、事務複製、對等複製以及合併複製。
缺點:非高可用功能,經常使用於讀寫分離,維護成本較高。

4.6 AlwaysOn可用性組

AlwaysOn可用性組是SQL Server 2012推出的新功能。一樣提供了數據庫級別的保護。它取數據庫鏡像和故障轉移集羣之長,使得業務上有關聯的數據庫做爲一個可用性組共同故障轉移,該功能還拓展了數據庫鏡像只能1對1的限制,使得1個主副本能夠對應最多4個輔助副本(在SQL Server 2014中,該限制被拓展到8個),其中2個輔助副本能夠被做爲熱備份和主副本實時同步,而另外兩個異步輔助副本能夠做爲暖備份。此外,輔助副本還能夠被配置爲只讀,並可用於承擔備份的負載。
正由於如此,數據庫鏡像在SQL Server 2012中被標記爲「過期」。
優勢:微軟較綜合的方案,可迴避故障轉移羣集、鏡像、複製、日誌傳送幾種技術的缺點。
缺點:SQL Server2012版本才能使用,沒法自動實現負載均衡,須要本身配置讀或寫字符串。 

4.7 Moebius負載均衡集羣

Moebius for SQL Server 是格瑞趨勢專門針對Microsoft SQL Server開發的綜合集羣平臺,基於SQL Server的內核實現,核心程序宿主在SQL Server的內核之中,該集羣可實現數據庫的負載均衡及橫向擴展;保證數據庫的可用性;保證多份冗餘數據的實時同步。
Moebius集羣,能夠實現SQL語句一級的負載均衡;同時將自動故障監測、虛擬IP及失敗轉移技術融入其中,知足企業對高可用系統建設的要求;數據複製時,採用了同步和異步兩種複製模式,可實現數據在多臺服務器間實時同步,保證事務的一致性和完整性,支持遠距離複製;Moebius集羣具備帶寬佔用少、同步效率高、數據實時性高、數據一致性保障好的特色。
優勢:第三方較綜合的方案,可迴避故障轉移羣集、鏡像、複製、日誌傳送幾種技術的缺點。
缺點:大批量寫入操做(相似採集系統)數據同步會有性能消耗。
 
參考:https://blog.csdn.net/z_cloud_for_sql/article/details/58042356
https://blog.csdn.net/kk185800961/article/details/72831081
相關文章
相關標籤/搜索