部署AlwaysOn第三步:集群資源組的健康檢測和故障轉移

来源:http://www.cnblogs.com/ljhdo/archive/2017/01/22/4533385.html
-Advertisement-
Play Games

資源組是由一個或多個資源組成的組,WSFC的故障轉移是以資源組為單位的,資源組中的資源是相互依賴的,相互關聯。一個資源所依賴的其他資源必須和該資源處於同一個資源組,跨資源組的依賴關係是不存在的。在任何時候,每個資源組都僅屬於集群中的一個結點,該結點就是資源組的活躍結點,由活躍結點為應用程式提供服務。 ...


資源組是由一個或多個資源組成的組,WSFC的故障轉移是以資源組為單位的,資源組中的資源是相互依賴的,相互關聯。一個資源所依賴的其他資源必須和該資源處於同一個資源組,跨資源組的依賴關係是不存在的。在任何時候,每個資源組都僅屬於集群中的一個結點,該結點就是資源組的活躍結點,由活躍結點為應用程式提供服務。AlwaysOn的故障轉移特性建立在WSFC的健康檢測和故障轉移的特性之上,因此,AlwaysOn和故障轉移集群有了不可分割的關係,理解他們的關係,有助於維護更好的維護AlwaysOn。

一,AlwaysOn的可用性組是集群的資源組

AlwaysOn的可用性組(Availability Group)是集群的資源組,其資源類型是“SQL Server Availability Group”,由於,WSFC的故障轉移是以資源組為單位的,因此,AlwaysOn的每次故障轉移都會將整個可用性組裡的資料庫一起轉移。

1,查看集群的資源組

打開故障轉移集群管理器(Failover Cluster Manager),選中集群結點,點開Roles,集群的每個角色就是一個資源組,在右邊的資源組監控器面板中,能夠看到創建成功的可用性組 TestAG,角色類型(Type)是Other;

2,資源組的故障轉移屬性

右擊角色的屬性,在Failover Tab中,查看集群的故障轉移屬性的設置,預設設置如下圖:

  • 故障轉移(Failover)屬性:設置集群在指定的時間區間內執行故障轉移的次數;
  • 故障恢復(Failback)屬性:設置集群在發生故障轉移之後,把資源組移回到最優先節點;

兩者的區別是:

  • 故障轉移(Failover)是指:出現故障後轉移,集群把故障結點擁有的資源組轉移到另一個可用的結點上;
  • 故障恢復(Failback)是指:出現故障後恢復,在發生故障轉移之後,如果最優先結點恢復正常,把資源組移回到最優先節點;

3,切換到General Tab

首選結點(Preferred Owners)選項的預設設置是勾選集群中的所有結點,優先順序是從上到下,第一個勾選的結點是最優先結點(Most Preferred Owners)。

在發生故障轉移之後,如果最優先結點恢復健康,那麼故障恢復(Failback)將資源組移回到最優先選結點;

二,集群資源的屬性

由於AlwaysOn 可用性組建立在故障轉移集群之上,Windows 集群負責監控AlwaysOn 可用性組的健康狀況。點擊角色TestAG下方面板Resource選項卡,能夠看到該資源組擁有兩個資源:可用性組TestAG和Listener。每個資源,都有Status標識該資源的健康狀態。

1,SQL Server 可用性組資源的屬性

TestAG資源的類型是SQL Server Availability Group,狀態是Online

2,切換到Dependencies Tab,查看資源的依賴關係

資源組中的資源是相互依賴的,一個資源所依賴的其他資源必須和該資源處於同一個資源組,跨資源組的依賴關係是不存在的。資源TestAG 和 資源Server Name之間是“and”的關係,這就是說,只有這兩個資源都處於Online狀態之後,整個資源組才處於可用的Online狀態。 

3,切換到Policies Tab,查看資源出現故障時,集群監控器的響應策略

該選項卡的選項決定了資源發生故障轉移時的行為,建議保留其預設設置,預設設置是當資源出現故障時,會在15分鐘內嘗試在當前結點重啟(一般是立即嘗試重啟,不需要等待15分鐘),第一次嘗試重啟失敗,就會將整個資源組轉移到其他的結點上。

4,切換到Advanced Policies Tab

配置持有資源的集群結點,配置資源監控器(Resource Monitor)檢測資源健康的時間間隔,WSFC為了檢測每個資源是否工作正常,會使用不同的時間間隔來做兩種不同程度的檢查,對於SQL Server可用組資源類型:

  • “Basic resource health check interval” 稱作“Looksalive check”,預設的時間間隔是5s;
  • “Thorough resource health check interval”稱作“Isalive check”,預設的時間間隔是30s;

5,切換到Properties Tab,查看和配置資源的私有屬性

HealthCheckTimeout屬性:預設設置是30000ms,這就是說,每30s,資源監控器都會對資源進行一次健康檢測;

FailureConditionLevel屬性:設置資源出現故障的閾值,WSFC連接到可用性主副本上的SQL Server實例,並執行存儲過程 sp_server_diagnostics獲得可用性組的診斷信息,藉此評估可用組的健康狀況。WSFC將存儲過程 sp_server_diagnostics的評估結果和FailureConditionLevel屬性值相比較,如果滿足條件,那麼WSFC判定當前的主副本出現故障,WSFC將可用性組切換到新的可用性副本上;

三,集群資源的健康檢測

集群中的每個資源都有一個資源類型,WSFC根據不同類型的資源,使用不同的方式進行Isalive和Looksalive檢查,一般會把SQL Server Availability Group資源類型配置成“If resource fails, attempt restart on current node” 和 “If restart is unsuccessufll, fail over all resources in this service or application”模式,即在資源的Policies 選項卡中勾選相應的選項:

Looksalive檢查:WSFC檢查活躍結點的SQL Server服務(Service Name 是 MSSQLServer)是否處於“啟動狀態”,根據SQL Server Availability Group資源的Advance Polices 選項卡中的設置,這個檢查預設每5s做一次;

Isalive檢查:WSFC連接活躍結點,併在活躍結點中執行TSQL查詢語句(select @@ServerName),如果活躍結點返回查詢的結果,那麼Isalive檢查成功;如果活躍結點的SQL Server實例連接不上,或沒有返回查詢結果,那麼Isalive檢查失敗,根據SQL Server Availability Group資源的Advance Polices選項卡中的設置,這個檢查預設每30s做一次。

每執行6次Looksalive檢查,就會執行一次Isalive檢查,WSFC之所以需要對SQL Server 可用性組執行Isalive檢查,是因為即使SQL Server 服務處於正在運行(Running)狀態,也不能說明SQL Server 可以響應應用程式的請求,有時,可能整個SQL Server實例已經掛起,但是SQL Server服務的狀態還是Running,所以需要Isalive 檢查深入檢查SQL Server的狀態。此外,一旦looksalive檢查失敗,WSFC就會立即執行Isalive檢查。

如果Isalive檢查失敗,WSFC會根據設置,重試3~5次Isalive檢查。如果這些檢查都失敗了,WSFC就根據Polices選項卡中的設置進行故障轉移,由集群仲裁選舉出新的主副本(Primary Replica),Listener將SQL Server實例名和IP地址指向集群中新的主副本,由其該結點為應用程式繼續提供服務,切換的過程是透明的。根據故障轉移模式的不同,分為自動故障轉移,手動故障轉移和強制故障轉移,詳細信息請閱讀《部署AlwaysOn第二步:配置AlwaysOn,創建可用性組》。

四,資源組的故障轉移

故障轉移完成之後,故障轉移的目標輔助副本轉換成為主副本,其資料庫轉換成主資料庫,新的主副本重做已經固化的事務日誌,回滾尚未提交的事務,使主資料庫恢復到原主副本發生故障時的事務一致性的狀態;如果原先的主副本從故障中恢復而重新運行,它會發現集群中已經存在新的主副本,於是它就把自己轉換為輔助副本,其資料庫轉為輔助數據。當心的輔助資料庫連接上主資料庫之後,輔助資料庫就開始進行同步操作,執行日誌的固化和重做。

1,自動故障轉移

在主副本出現故障之後,AlwaysOn迅速將資源組轉移到其他輔助副本,使資料庫再次變為可用,要發生自動故障轉移,必須滿足:

  • 當前主副本和一個輔助副本都設置為同步提交模式和自動故障轉移模式;
  • 輔助副本必須和主副本同步,即輔助副本處於SYNCHRONIZED狀態;
  • 主副本變得不可用,此時將發生自動故障轉移;

2,手動故障轉移

當主副本和輔助副本可用,並且輔助資料庫處於SYNCHRONIZED狀態時,可以執行手動故障轉移,但是,在手動轉移的過程中,如果主副本停止運行,那麼輔助副本將進入“RESOLVING”角色,此時,該副本既不是輔助副本,也不是主副本,但可以執行強制故障轉移把輔助副本升級為主副本,但是,可能會丟失數據。

通過故障轉移集群管理器(Failover Cluster Manager),能夠手動執行資源組的轉移操作,但是,建議始終通過SSMS執行任意模式的故障轉移操作,能夠避免操作錯誤和數據丟失。

3,強制故障轉移

一旦執行強制故障轉移,主副本尚未發送到原來的輔助副本上的事務日誌都會丟失,這意味著,新的主資料庫可能會缺少一些最近提交的數據更新,在強制故障轉移之後,剩餘的輔助副本上的輔助資料庫都將處於掛起狀態,要重新恢復輔助副本的配置,必須以某個副本上的數據為基礎,重新配置可用性組。

五,監控AlwaysOn的健康狀態

AlwaysOn的健康狀態可以從故障轉移集群管理器(Failover Cluster Manager)和SSMS來監控,建議通過SSMS來手動故障轉移和監控,配置故障轉移集群控制器來對AlwaysOn的異常進行故障排除。

打開SSMS,連接到主副本(Primary Replica)上,點擊“AlwaysOn High Availability”能夠看到與該SQL Server 實例相關聯的可用性組(Availability Group),右擊可用性組,打開Dashboard,能夠查看可用性組的詳細信息,並對可用性組執行手動故障轉移操作。

 

參考文檔:

《SQL Server 2012 實施與管理實戰指南》第二章

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在日常工作中,我們會遇到以下的情況,一個表每日數萬級的增長,而查詢的數據通常是在本月或今年,以前的數據偶爾會用到,但查詢和插入的效率越來越慢,用資料庫分區會有助於解決這個問題。關於分區的理論知識網上很多我這裡就不在累贅,我從一個實際例子出發,看如何將一個已經運行了很長時間的普通表進行分區。 提出問題 ...
  • 1、yum安裝mysql 安裝結果 2、設置開機啟動 3、MySQL服務 3.1、MySQL服務開啟 3.2、MySQL服務關閉 3.1、MySQL服務重啟 4、MySQL密碼 4.1、設置密碼 4.2、密碼忘記 4.2.1、修改/etc/my.cnf 4.2.2、重啟MySql 4.2.3、修改密 ...
  • 最近做項目的時候設計每天定點執行的腳本,所以在這 馬克一下,方便查找 set time_zone = '+8:00'; set GLOBAL event_scheduler = 1; -- 設置該事件使用或所屬的資料庫base資料庫 use nitrogenates; # 如果原來存在該名字的任務計 ...
  • 1.報錯 java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Integer; 坑爹的jar包的問題,版本不相容。 更換mybati ...
  • 1. atime、ctime與mtime atime是指access time,即文件被讀取或者執行的時間 (修改文件是不會改變access time的)。 ctime即change time,文件狀態改變時間,指文件的i結點被修改的時間,如通過chmod修改文件屬性,ctime就會被修改。 mti ...
  • 伺服器版本:Windows Server 2008 R2 Enterprise 平時搭建PHP網站,可以在linux伺服器上搭建,也可以在windows伺服器上搭建,主要看你個人需求了,今天我們演示的是用PHPWAMP綠色集成環境在windows伺服器上搭建php網站。 這款PHPWAMP綠... ...
  • 1.查閱/etc/issue文件時,使用man issue發現manual中see also出現motd(5), agetty(8), mingetty(8)字樣。以及文檔行首的issue(5)究竟是什麼意思。 man man後解釋為: 1 Executable programs or shell ...
  • 好久沒有更新博客,算算時間,已經有4年了,好吧,今天突發奇想,想把今天安裝Windows 10的過程給記錄下來。 2015年的時候,微軟就發佈了Windows 10,當時正版的Win7、Win8都可以直接升級上來,但是當時Windows 10 問題重重,真心沒有興趣,也不敢升級。 這些天,看了不少關 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...