一 AlwaysOn 可用性組
1.1 AlwaysOn 可用性組概述
AlwaysOn 可用性組功能是一個提供替代數據庫鏡像的企業級方案的高可用性和災難恢復解決方案。SQL Server 2012 中引入了 AlwaysOn 可用性組功能,此功能可最大程度地提高一組用戶數據庫對企業的可用性。 “可用性組”針對一組離散的用戶數據庫(稱為“可用性數據庫”,它們共同實現故障轉移)支持故障轉移環境。
一個可用性組支持一組讀寫主數據庫以及一至四組對應的輔助數據庫。可使輔助數據庫能進行只讀訪問和/或某些備份操作。
可用性組在可用性副本級別進行故障轉移。故障轉移不是由諸如因數據文件丟失而使數據庫成為可疑數據庫、刪除數據庫或事務日志損壞等此類數據庫問題導致的。
1.2 AlwaysOn 可用性組的優點
優點:
AlwaysOn 可用性組提供了一組豐富的選項來提高數據庫的可用性並改進資源使用情況。 主要組件如下:
- 支持最多五個可用性副本
“可用性副本”是可用性組的實例化,此可用性組由特定的 SQL Server 實例承載,該實例維護屬於此可用性組的每個可用性數據庫的本地副本。 每個可用性組支持一個主副本和最多四個輔助副本。
說明:每個可用性副本都必須駐留在單個 Windows Server 故障轉移群集 (WSFC) 群集的不同節點中。
- 支持替代可用性模式,如下所示:
- 異步提交模式。 此可用性模式是一種災難恢復解決方案,適合於可用性副本的分布距離較遠的情況。
- 同步提交模式。 此可用性模式相對於性能而言更強調高可用性和數據保護,為此付出的代價是事務延遲時間增加。一個給定的可用性組可支持最多三個同步提交可用性副本(包括當前主副本)。
- 支持幾種形式的可用性組故障轉移
自動故障轉移、計划的手動故障轉移(通常簡稱為“手動故障轉移”)和強制的手動故障轉移(通常簡稱為“強制故障轉移”)。
- 將特定的可用性副本配置為支持以下一種或兩種活動輔助功能:
- 利用只讀連接訪問,與副本的只讀連接可以在此副本作為輔助副本運行時訪問和讀取其數據庫。
- 當副本作為輔助副本運行時,對副本的數據庫執行備份操作。
提示:通過使用活動輔助功能,可更好地利用輔助硬件資源,從而提高 IT 效率並降低成本。 此外,通過將讀意向應用程序和備份作業轉移到輔助副本,有助於提高針對主副本的性能。
- 支持每個可用性組的可用性組偵聽器
“可用性組偵聽器”是一個服務器名稱,客戶端可連接到此服務器以訪問 AlwaysOn 可用性組的主副本或輔助副本中的數據庫。可用性組偵聽器將傳入連接定向到主副本或只讀輔助副本。偵聽器在可用性組故障轉移后提供快速應用程序故障轉移。
- 支持靈活的故障轉移策略以便更好地控制可用性組故障轉移
- 支持用於避免頁損壞的自動頁修復
- 支持加密和壓縮,這提供了安全且高性能的傳輸方式
- 提供了一組集成的工具來簡化部署和管理可用性組,這些工具包括:
- 用於創建和管理可用性組的 Transact-SQL DDL 語句
- SQL Server Management Studio 工具:
- 新建可用性組向導 創建和配置可用性組。 在某些環境中,此向導還可以自動准備輔助數據庫並且為每個數據庫啟動數據同步。
- 將數據庫添加到可用性組向導 向現有可用性組添加一個或多個主數據庫。 在某些環境中,此向導還可以自動准備輔助數據庫並且為每個數據庫啟動數據同步。
- 將副本添加到可用性組向導 向現有可用性組添加一個或多個輔助副本。 在某些環境中,此向導還可以自動准備輔助數據庫並且為每個數據庫啟動數據同步。
- 故障轉移可用性組向導 啟動對可用性組的手動故障轉移。 根據您指定為故障轉移目標的輔助副本的配置和狀態,該向導可以指定計划的手動故障轉移或強制手動故障轉移。
- AlwaysOn 面板 監視 AlwaysOn 可用性組、可用性副本和可用性數據庫,並且評估 AlwaysOn 策略的結果。
- “對象資源管理器詳細信息”窗格顯示有關現有可用性組的基本信息。
- PowerShell cmdlet。 有關詳細信息,請參閱 AlwaysOn 可用性組的 PowerShell Cmdlet 概述 (SQL Server)。
1.3 AlwaysOn術語和定義
- 可用性組 (availability group)
一個容器,用於一組共同實現故障轉移的數據庫(稱為“可用性數據庫”,它們共同實現故障轉移)。
- 可用性數據庫 (availability database)
屬於可用性組的數據庫。 對於每個可用性數據庫,可用性組將保留一個讀寫副本(“主數據庫”)和一個到四個只讀副本(“輔助數據庫”)。
- 主數據庫 (primary database)
可用性數據庫的讀寫副本。
- 輔助數據庫 (secondary database)
可用性數據庫的只讀副本。
- 可用性副本 (availability replica)
可用性組的實例化,該可用性組由特定的 SQL Server 實例承載,並維護屬於該可用性組的每個可用性數據庫的本地副本。存在兩種類型的可用性副本:一個“主副本”和一至四個“輔助副本”。
- 主副本 (primary replica)
可用性副本使主數據庫可用於來自客戶端的讀寫連接,還用於將每個主數據庫的事務日志記錄發送到每個輔助副本。
- 輔助副本 (secondary replica)
維護各可用性數據庫的輔助副本的可用性副本,充當可用性組的潛在故障轉移目標。 或者,輔助副本可以支持對輔助數據庫進行只讀訪問,並支持對輔助數據庫創建備份。
- 可用性組偵聽器 (availability group listener)
一個服務器名稱,客戶端可連接到此服務器以訪問 AlwaysOn 可用性組的主副本或輔助副本中的數據庫。可用性組偵聽器將傳入連接定向到主副本或只讀輔助副本。
二 可用性副本
每個可用性組定義一個包含兩個或更多故障轉移伙伴(稱為可用性副本)的集合。“可用性副本”是可用性組的組件。每個可用性副本都承載可用性組中的可用性數據庫的一個副本。對於某個給定可用性組,可用性副本必須位於某一 WSFC 群集的不同節點上的單獨 SQL Server 實例上。必須為 AlwaysOn 啟用這些服務器實例中的每個實例。
對於每個可用性組,一個給定實例只能承載一個可用性副本。但是,每個實例可用於多個可用性組。給定的實例可以是獨立實例或 SQL Server 故障轉移群集實例 (FCI)。如果您要求服務器級別的冗余,則使用故障轉移群集實例。
每個可用性副本都被分配一個初始角色(“主角色”或“輔助角色”),角色由該副本的可用性數據庫繼承。給定副本的角色確定它承載的是讀寫數據庫還是只讀數據庫。其中一個副本(稱為“主副本”)被分配主角色,它承載讀寫數據庫(稱為“主數據庫”)。至少一個其他副本(稱為“輔助副本”)被分配輔助角色。輔助副本承載只讀數據庫(稱為輔助數據庫)。
三 可用性模式
可用性模式是每個可用性副本的一個屬性。可用性模式確定主副本是否在給定的輔助副本將事務日志記錄寫入磁盤(強制寫入日志)之前,等待提交數據庫上的事務。AlwaysOn 可用性組支持兩種可用性模式:“異步提交模式”和“同步提交模式”。
- 異步提交模式
使用此可用性模式的可用性副本稱為“異步提交副本”。在異步提交模式下,主副本無需等待確認異步提交輔助副本已強制寫入日志,便可提交事務。異步提交模式可最大限度地減少輔助數據庫上的事務滯后時間,但允許它們滯后於主數據庫,因此可能會導致某些數據丟失。
- 同步提交模式
使用此可用性模式的可用性副本稱為“同步提交副本”。在同步提交模式下,在提交事務之前,同步提交主副本要等待同步提交輔助副本確認它已完成強制寫入日志。同步提交模式可確保在給定的輔助數據庫與主數據庫同步時,充分保護已提交的事務。這種保護的代價是延長事務滯后時間。
四 故障轉移群集和 AlwaysOn 可用性組
4.1 概述
部署 AlwaysOn 可用性組需要一個 Windows Server 故障轉移群集 (WSFC) 群集。若要啟用 AlwaysOn 可用性組,一個 SQL Server 實例必須駐留在某一 WSFC 節點上,並且該 WSFC 群集和節點必須處於聯機狀態。 此外,給定可用性組的每個可用性副本必須位於相同 WSFC 群集的不同節點上。
AlwaysOn 可用性組依賴 Windows 故障轉移群集 (WSFC) 群集來監視和管理屬於某一指定可用性組的可用性副本的當前角色,並且確定故障轉移事件是如何影響可用性副本的。為您創建的每個可用性組創建一個 WSFC 資源組。 WSFC 群集將監視此資源組,以便評估主副本的運行狀況。
針對 AlwaysOn 可用性組的仲裁基於 WSFC 群集中的所有節點,而與某一給定群集節點是否承載任何可用性副本無關。與數據庫鏡像相反,在 AlwaysOn 可用性組中沒有見證服務器角色。
WSFC 群集的總體運行狀況是由群集中節點仲裁的投票決定。如果 WSFC 群集由於計划外災難或由於持續的硬件或通信故障而導致脫機,則需要管理員手動干預。Windows Server 或 WSFC 群集管理員將需要“強制仲裁”,並在非容錯配置中將仍有效的群集節點變為聯機狀態。
4.2 故障轉移類型
在主副本和輔助副本之間的對話上下文中,通過稱為“故障轉移”的過程,主角色和輔助角色是潛在可互換的。 在故障轉移期間,目標輔助副本轉換為主角色,成為新的主副本。新的主副本使其數據庫作為主數據庫聯機,而客戶端應用程序可以連接到這些數據庫。如果以前的主副本可用,則它將轉換為輔助角色,成為輔助副本。以前的 master 數據庫成為輔助數據庫,且數據同步恢復。
有三種故障轉移形式:自動、手動和強制(可能造成數據丟失)。給定輔助副本支持的故障轉移形式取決於其可用性模式,對於同步提交模式來說,取決於主副本和目標輔助副本的故障轉移模式,如下所示。
- 同步提交模式支持兩種故障轉移形式
“計划的手動故障轉移”和“自動故障轉移”(如果目標輔助副本當前與 avt1 同步)。對這些故障轉移形式的支持取決於故障轉移伙伴上的“故障轉移模式屬性”的設置。如果在主副本或輔助副本上將故障轉移模式設置為“手動”,則對於該輔助副本僅支持手動故障轉移。如果同時在主副本和輔助副本上將故障轉移模式設置為“自動”,則該輔助副本同時支持自動故障轉移和手動故障轉移。
- 計划的手動故障轉移(無數據丟失)
手動故障轉移在數據庫管理員發出故障轉移命令之后發生,它將導致已同步的輔助副本轉換為主角色(同時確保數據受到保護),而主副本轉換為輔助角色。手動故障轉移要求主副本和目標輔助副本都在同步提交模式下運行,並且輔助副本必須已同步。
- 自動故障轉移(無數據丟失)
自動故障轉移是為了響應導致已同步的輔助副本轉換為主角色(同時確保數據受到保護)的故障而執行的。如果以前的主副本變為可用,則它將轉換為輔助角色。自動故障轉移要求主副本和目標輔助副本都在同步提交模式下運行,並且故障轉移模式設置為“自動”。此外,輔助副本必須已同步並具有 WSFC 仲裁,且滿足由可用性組的“靈活的故障轉移策略”指定的條件。
- 在異步提交模式下,唯一的故障轉移形式為強制手動故障轉移(可能造成數據丟失),通稱為“強制故障轉移”。強制故障轉移被認為是一種手動故障轉移,因為它只能手動啟動。強制故障轉移是一個災難恢復選項。當目標輔助副本與主副本不同步時,強制故障轉移是唯一可能的故障轉移形式。
五 與其他數據庫引擎功能的互操作性和共存
AlwaysOn 可用性組可與以下 SQL Server 功能和組件一起使用:
- 變更數據捕獲 (SQL Server)
- 更改跟蹤 (SQL Server)
- 包含的數據庫
- 數據庫加密
- 數據庫快照
- FILESTREAM
- FileTable
- 日志傳送
- 遠程 Blob 存儲區 (RBS)
- 復制
- Service Broker
- SQL Server 代理
- Reporting Services
參考官方:https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2012/ms189852(v%3dsql.110)
