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
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM