使用分散式可用性群組將 SQL 伺服器遷移到 AWS - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用分散式可用性群組將 SQL 伺服器遷移到 AWS

創建者:普拉芬·馬薩拉(AWS)

來源:SQL 伺服器內部部署

目標:EC2 上的 SQL 伺服器

R 類型:重新主機

環境:PoC 或試點

技術:資料庫;移轉

工作量:Microsoft

AWS 服務:Amazon EC2

Summary

Microsoft SQL Server 永遠在可用性群組提供 SQL Server 的高可用性 (HA) 和災難復原 (DR) 解決方案。可用性群組包含接受讀取/寫入流量的主要複本,以及最多八個接受讀取流量的次要複本所組成。可用性群組是在具有兩個或多個節點的 Windows 伺服器容錯移轉叢集 (WSFC) 上設定。

Microsoft SQL Server 永遠在分散式可用性群組提供解決方案,以設定兩個獨立的 WFSC 之間的兩個個別的可用性群組。屬於分散式可用性群組的可用性群組不一定要位於相同的資料中心。一個可用性群組可以位於內部部署,而另一個可用性群組則可以位於不同網域中的 Amazon Web Services (AWS) 雲端上的 Amazon 彈性運算雲端 (Amazon EC2) 執行個體上。 

此模式概述了使用分散式可用性群組將屬於現有可用性群組一部分的現場部署 SQL Server 資料庫遷移至具有在 Amazon EC2 上設定可用性群組的 SQL Server 的步驟。遵循此模式,您可以將資料庫遷移到 AWS 雲端,並在切換期間將停機時間降至最低。資料庫在切換後立即在 AWS 上具有高可用性。您也可以使用此模式將基礎作業系統從現場部署變更為 AWS,同時保留相同版本的 SQL Server。

先決條件和限制

先決條件

  • 有效的 AWS 帳戶

  • AWS Direct Connect 或 AWS Site-to-Site VPN

  • 在現場部署和 AWS 上的兩個節點上安裝的相同版本的 SQL Server

產品版本

  • SQL 伺服器版本 2016 及更新版本

  • SQL Server Enterprise Edition

架構

源, 技術, 堆棧

  • Microsoft SQL Server 資料庫與永遠在可用性群組內部部署

目標技術堆疊

  • 在 AWS 雲端上的 Amazon EC2 上具有永遠在線可用性群組的 Microsoft SQL 伺服器資料庫

移轉架構

術語

  • 水務委員會 1 — 樓宇內的水務足球會

  • WSFC 2 — AWS 雲端上的 WSFC

  • AG 1 — 第一個可用性群組,這是在 WSFC 1

  • AG 2 — 第二個可用性群組,這是在 WSFC 2 中

  • SQL Server 主要複本 — AG 1 中的節點,被視為所有寫入的全域主要複本

  • SQL Server 轉寄站 — AG 2 中的節點,以非同步方式從 SQL Server 主要複本接收資料

  • SQL Server 次要複本 — AG 1 或 AG 2 中的節點,可從主要複本或轉寄站同步接收資料

工具

  • AWS Direct Connect — AWS Direct Connect 透過標準乙太網路光纖電纜將您的內部網路連結到 AWS Direct Connect 位置。透過此連線,您可以直接建立公有 AWS 服務的虛擬界面,繞過網路路徑中的網際網路服務供應商。

  • Amazon EC2 — 亞馬遜彈性運算雲 (Amazon EC2) 在 AWS 雲端提供可擴展的運算容量。您可以使用 Amazon EC2 根據需要啟動任意數量或少量的虛擬伺服器,並且可以向外擴展或擴展。

  • AWS Site-to-Site VPN — AWS Site-to-Site VPN 支援建立 site-to-site 虛擬私人網路 (VPN)。您可以設定 VPN 在 AWS 上啟動的執行個體和自己的遠端網路之間傳遞流量。

  • Microsoft SQL 服務器管理工作室-Microsoft SQL 服務器管理工作室(SSMS)是用於管理 SQL 服務器基礎設施的集成環境。它提供了一個用戶界面和一組具有與 SQL Server 交互的豐富腳本編輯器的工具。

史诗

任務描述所需技能
在 AWS 上建立 WSFC。

在具有兩個 HA 節點的 Amazon EC2 執行個體上建立 WSFC 2。您將使用此容錯移轉叢集在 AWS 上建立第二個可用性群組 (AG 2)。

系統管理員、 SysOps 管理員
在 WSFC 2 上建立第二個可用性群組。

使用 SSMS,在 WSFC 2 中的兩個節點上建立 AG 2。WSFC 2 中的第一個節點將充當轉發器。WSFC 2 中的第二個節點將充當 AG 2 的次要複本。

在此階段,AG 2 中沒有可用的資料庫。這是設定分散式可用性群組的起點。

DBA, 開發人員
在 AG 2 上建立沒有復原選項的資料庫。

備份內部部署可用性群組 (AG 1) 上的資料庫。 

將資料庫還原至轉寄站和 AG 2 的次要複本,而不使用復原選項。還原資料庫時,請指定具有足夠磁碟空間供資料庫資料檔和記錄檔使用的位置。

在此階段,資料庫處於還原狀態。它們不是 AG 2 或分散式可用性群組的一部分,而且不會同步處理。

DBA, 開發人員
任務描述所需技能
在 AG 1 上建立分散式可用性群組。

若要在 AG 1 上建立分散式可用性群組,請CREATE AVAILABILITY GROUP搭配選DISTRIBUTED項使用。

  1. 使用 AG 1 和 AG 2 的LISTENER_URL端點位址。

  2. 對於AVAILABILITY-MODE,使用ASYNCHRONOUS_COMMIT以避免網路延遲 (如果有的話)。這不會影響資料庫的效能。

  3. 對於 FAILOVER_MODE,請使用 MANUAL。這是唯一可與分散式可用性群組搭配使用的可用性模式。

  4. 若要在 AG 2 上手動還原資料庫,並對較大的資料庫擁有更多控制權,請使MANUALSEEDING_MODE.

DBA, 開發人員
在 AG 2 上建立分散式可用性群組。

若要在 AG 2 上建立分散式可用性群組,請ALTER AVAILABILITY GROUP搭配選DISTRIBUTED項使用。

  1. 使用 AG 1 和 AG 2 的LISTENER_URL端點位址。

  2. 對於AVAILABILITY-MODE,使用ASYNCHRONOUS_COMMIT以避免網路延遲 (如果有的話)。這不會影響資料庫的效能。

  3. 對於 FAILOVER_MODE,請使用 MANUAL。這是唯一可與分散式可用性群組搭配使用的可用性模式。

  4. 若要在 AG 2 上手動還原資料庫,並對較大的資料庫擁有更多控制權,請使MANUALSEEDING_MODE.

分散式可用性群組是在 AG 1 和 AG 2 之間建立的。

AG 2 中的資料庫尚未設定為參與從 AG 1 到 AG 2 的資料流程。

DBA, 開發人員
將資料庫新增至 AG 2 上的轉寄站和次要複本。

使用 AG 2 上的轉寄站和次要複本中ALTER DATABASESET HADRAVAILABILITY GROUP選項,將資料庫新增至分散式可用性群組。 

這會啟動 AG 1 和 AG 2 上的資料庫之間的非同步資料流程。 

全域主要執行寫入作業、同步傳送資料至 AG 1 上的次要複本,並以非同步方式將資料傳送至 AG 2 上的轉寄站。AG 2 上的轉寄站會同步傳送資料至 AG 2 上的次要複本。

DBA, 開發人員
任務描述所需技能
使用 DMV 和 SQL 伺服器記錄檔。

使用動態管理檢視 (DMV) 和 SQL Server 記錄檔來監視兩個可用性群組之間的資料流程狀態。 

有興趣監視的 DMV 包括sys.dm_hadr_availability_replica_statessys.dm_hadr_automatic_seeding

如需轉寄站同步處理的狀態,請監視轉寄站上 SQL Server 記錄檔中的同步處理狀態。

DBA, 開發人員
任務描述所需技能
停止主要複本的所有流量。

在 AG 1 中停止主要複本的傳入流量,這樣資料庫就不會發生寫入活動,而且資料庫已準備好進行移轉。

應用程式擁有者、開
變更 AG 1 上分散式可用性群組的可用性模式。

在主要複本上,將分散式可用性群組的可用性模式設定為同步。 

將可用性模式變更為同步之後,資料會從 AG 1 中的主要複本同步傳送至 AG 2 中的轉寄站。

DBA, 開發人員
檢查兩個可用性群組中的 LSNS。

檢查 AG 1 和 AG 2 中的最後一個記錄序號 (LSNS)。因為 AG 1 中的主要複本中沒有發生任何寫入,因此資料會同步處理,而且兩個可用性群組的最後一個 LSNS 都應該相符。

DBA, 開發人員
將 AG 1 更新為次要角色。

當您將 AG 1 更新為次要角色時,AG 1 會遺失主要複本角色且不接受寫入,而且兩個可用性群組之間的資料流程會停止。

DBA, 開發人員
任務描述所需技能
手動容錯移轉至 AG 2。

在 AG 2 的轉寄站上,變更分散式可用性群組以允許資料遺失。因為您已經檢查並確認 AG 1 和 AG 2 上的最後一個 LSNS 相符,因此資料遺失並不是問題。

當您允許 AG 2 中轉寄站上的資料遺失時,AG 1 和 AG 2 的角色會變更:

  • AG 2 會成為具有主要複本和次要複本的可用性群組。

  • AG 1 會成為具有轉寄站和次要複本的可用性群組。

DBA, 開發人員
變更 AG 2 上分散式可用性群組的可用性模式。

在 AG 2 的主要複本上,將可用性模式變更為非同步。

這會將資料移動從 AG 2 變更為 AG 1,從同步變更為非同步。為了避免 AG 2 和 AG 1 之間的網路延遲 (如果有的話),必須執行此步驟,而且不會影響資料庫的效能。

DBA, 開發人員
開始將流量傳送到新的主要複本。

更新連接字串,以使用 AG 2 上的接聽程式 URL 端點傳送流量至資料庫。

AG 2 現在接受寫入並將資料傳送至 AG 1 中的轉寄站,並將資料傳送至 AG 2 中自己的次要複本。資料會以非同步方式從 AG 2 移至 AG 1。

應用程式擁有者、開
任務描述所需技能
將分散式可用性群組卸除在 AG 2 上。

監視移轉的規劃時間長度。然後將分散式可用性群組放在 AG 2 上,以移除 AG 2 和 AG 1 之間的分散式可用性群組設定。這會移除分散式可用性群組組態,以及從 AG 2 到 AG 1 停止的資料流程。 

此時,AG 2 在 AWS 上具有高可用性,其主要複本可在同一個可用性群組中進行寫入和次要複本。

DBA, 開發人員
解除委任內部部署伺服器。

解除委任屬於 AG 1 一部分的 WSFC 1 中的內部部署伺服器。

系統管理員、 SysOps 管理員

相關資源