事件
3月31日 下午11時 - 4月2日 下午11時
最大的 SQL、網狀架構和 Power BI 學習事件。 3 月 31 日 - 4 月 2 日。 使用程式代碼 FABINSIDER 來節省 $400 美元。
立即註冊
適用於:SQL Server
將裝載 Always On 可用性群組 (AG) 的 SQL Server 執行個體升級為新的 SQL Server 版本、新的 SQL Server Service Pack 或累積更新,或安裝至新的 Windows Service Pack 或累積更新時,您可透過執行輪流升級來將主要複本的停機時間減少至僅單一手動容錯移轉 (容錯回復為原始主要複本時則為兩次手動容錯移轉)。
在升級過程中,無法使用次要複本進行容錯移轉或唯讀作業,而且在升級完成之後,次要複本可能需要一些時間才能趕上主要複本節點,視主要複本節點的活動量而定 (因此預期會有很高的網路流量)。
另請注意,在初始容錯移轉至執行較新版 SQL Server 的次要複本之後,該 AG 中的資料庫將會進行升級,以更新到最新版本。 在這段期間內,這些資料庫都不會有可讀取的複本。 首次故障切換之後的停機時間長短,取決於 AG 中的資料庫數目。 如果您打算容錯回復為原始的主要複本,此步驟在您進行容錯回復時不會重複。
注意
本文僅限討論 SQL Server本身的升級。 其未涵蓋包含 Windows Server 容錯移轉叢集 (WSFC) 的作業系統升級。 在 Windows Server 2012 R2 之前的作業系統版本中,Windows 作業系統無法針對裝載容錯移轉叢集的系統進行升級。 若要升級在 Windows Server 2012 R2 上執行的叢集結點,請參閱叢集作業系統輪流升級 \(機器翻譯\)。
在開始之前,請檢閱以下重要資訊:
支援的版本與版次升級:確認您是否可以從您的 Windows 作業系統版本和 SQL Server 版本升級至最新版的 SQL Server。 例如,如果您直接從 SQL Server 2005 執行個體升級,則會升級您的資料庫相容性層級。
選擇資料庫引擎升級方法:若要依正確順序升級,除了根據您所檢閱的<支援的版本與版次升級>,也請根據您環境中安裝的其他元件,來選取適當的升級方法和步驟。
計劃和測試資料庫引擎升級計畫:檢閱版本資訊與已知的升級問題、升級前檢查清單,並開發和測試升級計畫。
安裝 SQL Server 的硬體和軟體需求:檢閱安裝 SQL Server 的軟體需求。 如果需要其他軟體,請先將其安裝在每個節點上,然後開始升級程序,以將任何停機時間降到最低。
檢查是否針對任何 AG 資料庫使用異動資料擷取或複寫:如果啟用 AG 中的任何資料庫進行異動資料擷取 (CDC),請完成這些指示。
注意
不支援在同一個可用性群組 (AG) 中混用不同版本的 SQL Server 執行個體,除非在進行滾動升級時。而升級應該快速進行,因此不應長時間維持在這種狀態。 升級 SQL Server 2016 (13.x) 和更新版本的另一個選項,是透過使用分散式可用性群組。
注意
不支援使用叢集感知更新 (CAU) Windows 功能來更新 AlwaysOn 可用性群組。
當您執行伺服器升級或更新時,請遵循下列指導方針,好讓停機時間及 AG 的資料遺失情況降至最低:
開始輪流升級之前:
至少在其中一個同步認可複本執行個體上進行手動故障轉移練習。
在每一個可用性資料庫上執行完整資料庫備份來保護資料
在每一個可用性資料庫上執行 DBCC CHECKDB
請務必先升級遠端次要複本執行個體,然後是本機次要複本執行個體,最後是主要複本執行個體。
對於正在進行升級的資料庫,無法進行備份。 在升級次要複本之前,請設定自動備份喜好設定,只在主要複本上執行備份。 執行版本升級時,無法讀取任何複本或使用其執行備份。 執行非版本升級時,您可先設定要在次要複本上執行的自動備份,然後再升級主要複本。
在版本升級期間,於升級可讀取的次要複本之後,以及在將主要複本切換至已升級的次要複本或直接升級主要複本之前,皆無法存取可讀取的次要複本。
為了避免 AG 在升級程序期間發生意外的容錯移轉,請從所有同步認可複本中移除可用性容錯移轉,再開始操作。
在將 AG 容錯移轉至已升級的包含次要複本的執行個體之前,請勿升級主要複本執行個體。 否則,客戶端應用程式在主要副本執行個體升級期間可能會面臨較長的停機時間。
一定要將 AG 容錯移轉至同步認可的次要複本執行個體。 若您故障轉移到非同步提交的次要副本執行個體,資料庫將會面臨資料遺失的風險,而且資料移動將自動暫停,直到您手動恢復資料移動為止。
在您升級或更新其他任何次要複本執行個體之前,請勿升級主要複本執行個體。 已升級的主要複本將無法再傳送記錄到尚未升級 SQL Server 執行個體至相同版本的次要複本。 當資料移至次要複本的作業暫停時,該次要複本將無法進行自動容錯移轉,並且您的可用性資料庫將面臨資料遺失的風險。 這也適用於輪流升級期間,當您從舊的主要手動容錯移轉至新的主要時。 因此,在升級舊主要之後,您可能需要繼續同步處理。
在容錯移轉 AG 之前,請確認容錯移轉目標的同步處理狀態為 SYNCHRONIZED
。
警告
在已安裝舊版 SQL Server 的伺服器上安裝 SQL Server 的新執行個體或新版本時,可能會意外導致舊版 SQL Server 所裝載的任何可用性群組中斷。這是因為在 SQL Server 執行個體或版本的安裝期間,SQL Server 高可用性模組 (RHS.EXE) 會開始升級。 這會導致伺服器上擔任主要角色的現有可用性群組暫時中斷。 因此,當您在已裝載較舊 SQL Server 版本 (具有可用性群組) 的系統中安裝新版 SQL Server 時,強烈建議您執行下列其中一項:
在維護期間安裝新版 SQL Server。
將可用性群組容錯移轉至次要複本,使其在新的 SQL Server 執行個體安裝期間不是主要的。
實際上,具體程序取決於多種因素,例如 您的 AG 的部署拓撲結構以及每個複本的提交模式。 但是在最簡單的案例中,輪流升級是多階段的程序,其最簡單的形式包含以下步驟:
必要時,您可以執行額外的手動容錯移轉,讓 AG 回到原始的設定。
注意
升級同步提交的複本並使其離線,並不會延遲主伺服器的交易。 在次要複本中斷連線後,交易會在主要複本上立即認可,而不會等候記錄強行寫入至次要複本。
如果將 REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT
設定為 1
或 2
,在更新過程中,當有相對數量的同步次要副本無法使用時,主要副本可能無法用於讀取或寫入。
注意
當您將次要復本就地升級至較新版本的 SQL Server 時,可用性群組內的資料庫會維持在同步處理/復原或同步處理/在復原狀態中,直到可用性群組手動故障轉移為止,這會完成復原並升級資料庫。 升級後的主要複本無法再將記錄傳送至任何較低版本的次要複本,且資料移動會停止,此外該複本不會發生自動容錯移轉,且您的可用性資料庫很可能會遺失資料。 在升級舊的主要伺服器之後,您可能需要恢復同步。 建議您先升級所有次要複本,再故障切換至具有新版本的複本。 如此一來,您可以選擇在資料庫升級為新格式之後執行容錯移轉。
如果您部署 AG 只是為了災害復原,您可能必須將 AG 容錯移轉至非同步認可的次要複本。 下圖說明這類組態:
在這種情況下,您必須在進行逐步升級時,將 AG 切換到非同步提交的次要副本。 為了防止資料遺失,請將認可模式變更為同步認可,並等候次要複本完成同步化,再容錯移轉 AG。 因此,輪流升級程序可能如下所示:
SYNCHRONIZED
因為同步提交模式不是建議用於與遠端站台資料同步的設定,所以客戶端應用程式可能會注意到設定變更後資料庫延遲會立即增加。 此外,執行容錯移轉會導致所有未認可的日誌訊息被丟棄。 捨棄的記錄訊息數量可能很龐大,這是因為兩個站台之間的高度網路延遲,導致用戶端遭遇大量的交易失敗。 您可以執行下列動作,讓用戶端應用程式的影響降至最低:
謹慎選擇維護期間,使其發生於用戶端流量較低的期間
在主要站台升級或更新 SQL Server 時,請將可用性模式更改為非同步提交,當您準備再次切換至主要站台時,將其還原為同步提交模式。
若 AG 包含容錯移轉叢集實例 (FCI) 節點,您應該先升級不活動的節點,再升級活動的節點。 下圖說明一個常見的 AG 情境,其中具備 FCI 提供本地高可用性,並且在 FCI 之間進行異地災害復原的非同步提交,還包括升級順序。
REMOTE2
REMOTE2
REMOTE1
PRIMARY2
PRIMARY2
PRIMARY1
若您正在執行多個 AG,而其中的主要複本位於不同的伺服器節點上 (主動/主動設定),則升級路徑會牽涉到更多的容錯移轉步驟,以保留程序中的高可用性。 假設您在三個伺服器節點上執行三個可用性群組(AG),且其所有複本都是以同步認可模式進行,如下表所示:
AG | Node1 | Node2 | Node3 |
---|---|---|---|
AG1 | Primary | ||
AG2 | Primary | ||
AG3 | Primary |
在您的案例中,可能適合依照以下順序執行負載平衡的輪流升級:
Node3
(以釋放 Node2
)Node2
Node2
(以釋放 Node1
)Node1
Node1
(以釋放 Node3
)Node3
Node3
此升級順序的平均停機時間少於每個可用性群組(AG)的兩次故障切換。 產生的設定如下表所示。
AG | Node1 | Node2 | Node3 |
---|---|---|---|
AG1 | Primary | ||
AG2 | Primary | ||
AG3 | Primary |
根據您的特定實作方式,您的升級路徑可能會有不同,用戶端應用程式遇到的停機時間也可能會有差異。
注意
在許多情況下,您在完成滾動升級後會回退至原始主要複本。
若要執行分散式可用性群組的輪流升級,請先升級所有次要複本。 接下來,進行轉發器的容錯移轉,然後升級第二個可用性群組中最後剩餘的執行個體。 在所有其他複本都升級後,請進行全域主節點的故障轉移,然後升級第一個可用性群組中最後剩餘的執行個體。 下方提供包含步驟的詳細圖表。
根據您的特定實作方式,您的升級路徑可能會有不同,用戶端應用程式遇到的停機時間也可能會有差異。
注意
在許多情況下,在完成滾動升級後,您會切換回原始主要副本。
重要
請在每個步驟之間驗證同步。 在繼續下一個步驟前,請確認您的同步提交複本在可用性群組內的確實同步,而且您的全域主節點與分散式 AG 中的中繼器同步。
建議:在您每次驗證同步時,請同時在 SQL Server Management Studio 中重新整理資料庫節點和分散式 AG 節點。 在所有項目都同步後,請儲存各複本狀態的螢幕擷取畫面。 這有助於您掌握當下進行到哪個步驟,證明在進行下一步之前一切運作正常,並在發生任何錯誤時協助您進行疑難排解。
可用性群組 | 主要副本 | 次要複本 |
---|---|---|
AG1 | NODE1\SQLAG |
NODE2\SQLAG |
AG2 | NODE3\SQLAG |
NODE4\SQLAG |
DistributedAG | AG1 (全域) | AG2 (轉寄站) |
如圖所示,升級實例的步驟如下:
NODE4\SQLAG
(AG2 的次要組件) 並重新啟動伺服器。NODE2\SQLAG
,然後重新啟動伺服器。NODE3\SQLAG
容錯移轉至 NODE4\SQLAG
。NODE3\SQLAG
並重新啟動伺服器。NODE1\SQLAG
容錯移轉至 NODE2\SQLAG
。NODE1\SQLAG
並重新啟動伺服器。NODE4\SQLAG
切換至 NODE3\SQLAG
。NODE2\SQLAG
容錯回復至 NODE1\SQLAG
。如果每個可用性群組中各存在第三個複本,則會在 NODE3\SQLAG
和 NODE1\SQLAG
之前升級。
重要
請在每個步驟之間驗證同步。 在繼續下一步之前,請確認您的同步提交複本在可用性群組內已同步,並且您的全域主伺服器與分散式 AG 中的轉寄站已同步。
建議:每次確認同步處理時,都請重新整理 SQL Server Management Studio 中的資料庫節點和分散式 AG 節點。 在所有項目都同步處理後,請建立螢幕擷取畫面並加以儲存。 這有助於您掌握當下進行到哪個步驟,證明在進行下一步之前一切運作正常,並在發生任何錯誤時協助您進行疑難排解。
根據所套用的更新,可能需要額外的步驟才能啟用 AG 複本資料庫進行異動資料擷取或複寫。 請參閱更新的版本資訊,以判斷是否需要下列步驟:
升級每個次要複本。
升級所有次要複本之後,將 AG 容錯移轉至已升級的執行個體。
在裝載主要複本的執行個體上執行下列 Transact-SQL:
EXECUTE [master].[sys].[sp_vupgrade_replication];
注意
此命令可能需要幾分鐘才能完成執行。 如果使用 SQL Server 2019 CU1 或更新版本,請略過此步驟。 若要深入瞭解,請檢閱 KB4530283。
升級原本為主要複本的執行個體。
如需背景資訊,請參閱 CDC functionality may break after upgrading to the latest CU (CDC 功能可能會在升級至最新版 CU 之後中斷)。
事件
3月31日 下午11時 - 4月2日 下午11時
最大的 SQL、網狀架構和 Power BI 學習事件。 3 月 31 日 - 4 月 2 日。 使用程式代碼 FABINSIDER 來節省 $400 美元。
立即註冊訓練
認證
Microsoft Certified: Azure Database Administrator Associate - Certifications
使用 Microsoft PaaS 關聯式資料庫供應項目管理用於雲端、內部部署和混合關聯式資料庫的 SQL Server 資料庫基礎結構。
文件
升級故障轉移叢集實例 - SQL Server Always On
使用安裝媒體升級 SQL Server Always On 容錯移轉叢集執行個體的步驟。 了解輪流升級和升級多個子網路的叢集。
升級 SQL Server 執行個體:Windows Server 2012 和更舊版本的叢集 - SQL Server Always On
描述如何升級在 Windows Server 2008、Windows Server 2008 R2 和 Windows Server 2012 上執行的 SQL Server 容錯移轉叢集執行個體。
SQL Server 支援從舊版的 SQL Server 升級已複寫的資料庫,而不需要停止其他節點上的活動。