原文地址:https://www.sqlshack.com/apply-sql-server-patches-or-cumulative-updates-in-sql-server-always-on-availability-groups/
在本系列關於 SQL Server 始終在線可用性組的第 32 篇文章中,我們將討論為 AG 複製實例應用服務包或累積更新包的過程。
SQL Server 補丁概述
定期對 SQL Server 進行更新(使用服務包(SP)或累積更新包(CU))是一種推薦的做法。以下是對 SQL Server 更新的簡要概述。
- 服務包:服務包包含已發佈的熱修復程序和更新的單一打包文件。
- 累積包(CU):累積包(CU)是熱修復程序和較小的功能增強內容。
- 一般分發版本(GDR):微軟發佈 GDR 版本,它特別與 SQL Server 安全性相關。
在 SQL Server 2016 之前,微軟會定期發佈服務包和累積更新。例如,在 SQL Server 2016 版本中,您會看到以下這樣的序列。
- RTM release
- Cumulative Updates ( CU1 to CU9)
- Service Pack 1
- Cumulative Packs (CU1 to CU15)
- Service Pack 2
從 SQL Server 2017 版本開始,微軟改變了其服務模式。它不再提供服務包,而是每隔兩個月發佈累積包。每個累積包都包含之前的累積包內容。例如,在 SQL Server 2019 中,微軟於 2020 年 9 月 2 日發佈了最新的 CU7。因此,如果您使用的是 RTM 版本,可以直接應用 CU7 以獲得最新的構建版本 [15.0.4063.15]。
為 SQL Server Always On的副本應用 SQL Server 補丁
在 SQL Server Always On Availability Group中,我們使用多個 SQL 實例,並將它們稱為主副本(primary)和輔助副本(secondary)。根據您的 SQL Server 版本,您可以有一個主副本和多個輔助副本。
在故障轉移集羣(failover cluster)環境中運行的 SQL Server 與使用Availability Group的 SQL Server 在補丁安裝流程上存在差異。
在故障轉移集羣中,SQL 服務會繼續在一台節點上保持運行狀態,而另一台節點的服務則處於停止狀態。
活動節點擁有共享磁盤,並且在故障轉移過程中會轉移到另一台節點上。
活動節點擁有共享磁盤,並且在故障轉移過程中會轉移到另一台節點上。
在可用性組配置中,SQL 服務在所有副本上運行,並充當主副本或從副本的角色。在本文中,我們將介紹如何在 HADR 環境中的三節點可用性組中應用補丁。
我們可以將整個 SQL 擴補工作分為三個階段。
- 準備工作
- 應用補丁
- 收尾工作
讓我們依次探討每個階段的任務,並對其進行詳細闡述。
準備階段
在準備階段,我們需要完成以下任務:
- 確定當前補丁級別和目標補丁級別。對於目標補丁級別,可以選擇 N-1(N=最新補丁) 的補丁級別。如果你想直接使用最新補丁,務必查看 SQL Server 官方博客,瞭解應用該補丁後是否存在已知問題。
- 切勿直接在生產環境中應用補丁。應先在低環境中測試目標補丁,等待至少一週的應用驗證後,再遷移至生產環境打補丁。
- 仔細閲讀目標補丁的發佈説明,它會提供有關錯誤修復和功能增強的信息。
- 在對生產副本應用補丁之前,需要驗證以下內容:
1,確認在主副本上已經擁有系統數據庫和用户數據庫的最新備份。最好進行完整備份;但如果數據庫體量過大,可以在應用補丁前,選擇進行 差異備份或事務日誌備份。
2,在輔助副本上,進行系統數據庫的備份。 - 使用 可用性組(AG)儀表板驗證可用性組的健康狀況。在同步提交模式下,AG 數據庫應處於 Synchronized(已同步)狀態;在異步提交模式下,應處於 Synchronizing(正在同步)狀態。
在SQL Server Always On Availability Group可用性組副本中應用 SQL Server 補丁
如上圖所示,我們有三個需要打補丁的 SQL 實例:
- 在主數據中心有兩個節點,主數據中心的可用性組處於同步模式。
- 在輔助數據中心有一個節點,輔助數據中心的可用性組處於異步模式。
首先,我們在主數據中心的輔助副本上應用補丁。
- 在 SSMS 中打開可用性組屬性,將 故障轉移模式 從自動(Automatic) 修改為手動(Manual)(如下圖所示)。這樣可以確保在給主副本打補丁時,如果出現問題,不會自動故障轉移到輔助副本。
- 在 SSMS 中連接到 輔助副本,展開 Always On High Availability -> Availability Databases。對輔助副本的數據庫執行Suspend Data Movement(暫停數據傳輸),這樣主副本就不會再向該特定的輔助副本發送事務塊。如果你從主副本暫停數據傳輸,那麼會導致所有輔助副本的數據傳輸都被暫停。因此,在應用 SQL Server 補丁時,應當從需要打補丁的輔助副本上執行暫停操作。
- 遠程連接至輔助副本,按需安裝 Service Pack / Cumulative Update(累計更新包)。安裝過程比較直接,可以按照安裝嚮導完成最新補丁的應用。
- 重啓輔助副本:安裝補丁後必須重啓服務器。
- 當輔助副本上線後,使用 SSMS 連接並執行驗證:
- 驗證 SQL 服務是否正常運行
- 驗證 SQL Server 版本是否更新成功
- 檢查 SQL Server 錯誤日誌中是否存在錯誤或警告
- 驗證數據庫狀態
- 建議在打補丁後運行一次 DBCC CHECKDB 來驗證數據庫一致性
- 然後,從 輔助副本數據庫 恢復數據傳輸(Resume Data Movement)。輔助副本可能需要一段時間才能恢復到 Synchronized(同步狀態),因為它需要先應用所有待處理的事務日誌塊。
- 等待 AG 儀表板 顯示為健康狀態(綠色)。一旦健康狀態確認無誤,執行一次 手動故障轉移(Manual Failover),將當前的主副本切換到主站點中的輔助副本。
- 故障轉移後,當前的主副本會變為輔助副本。
- 此時可以按照相同步驟為新的輔助副本應用 SQL Server 補丁。
- 當新的輔助副本打完補丁並完成驗證後,再執行 AG回切(Failback)。這樣,主副本將恢復到打補丁前的狀態。
- 最後,將同步提交模式下的 主副本和輔助副本 的 故障轉移模式(Failover Mode) 改回自動(Automatic)。
- 至此,我們已經完成了 主站點 中 SQL Server Always On 可用性組的補丁操作。此時可以通知應用團隊進行驗證,並反饋是否存在問題。
- 對於 災備站點(DR)副本節點:它在 SQL Server Always On 可用性組中處於 異步模式,因此故障轉移模式本來就是 手動(Manual)。需要執行以下步驟:
- 暫停 DR 副本的數據傳輸
- 在 DR 副本上應用補丁
- 執行數據庫與 SQL 服務驗證
- 恢復數據傳輸
收尾工作
在對可用性組中的 SQL 實例應用完補丁之後,需要進行以下驗證:
- 確認版本:驗證所有參與 SQL Server Always On 可用性組的副本,SQL 實例版本是否都已更新
- 故障轉移測試:執行可用性組的故障轉移(Failover),並在故障轉移和回切(Failback)後確認儀表板(Dashboard)狀態是否健康
- 日誌檢查:查看所有副本上的錯誤日誌
- 應用驗證:讓應用團隊驗證業務功能是否正常
總結
SQL Server 打補丁是數據庫管理員的一項重要任務。本文我們探討了在高可用與災難恢復(HADR)配置下,為 SQL Server Always On 可用性組應用補丁的流程。
需要牢記的是:每個環境可能會因為配置和 SQL Server 功能的不同而有所差異。因此,在打補丁之前必須做好規劃,以避免最後時刻的倉促操作。始終應當先在開發和測試環境中應用補丁,再推廣到生產環境。