部署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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...