教學課程:設定主動異地複寫與容錯移轉 (Azure SQL 資料庫)
適用於: Azure SQL 資料庫
本文顯示如何使用 Azure 入口網站、PowerShell 或 Azure CLI,設定作用中異地複寫,並為 Azure SQL 資料庫起始容錯移轉。
每個資料庫均已設定作用中異地複寫功能。 若要對資料庫群組執行容錯移轉,或如果您的應用程式需要穩定的連線端點,請考慮改用容錯移轉群組。
必要條件
若要完成本教學課程,您需要單一 Azure SQL 資料庫。 若要了解如何使用 Azure 入口網站、Azure CLI 或 PowerShell 建立單一資料庫,請參閱快速入門:建立單一資料庫 - Azure SQL 資料庫。
只要兩個訂用帳戶都位於相同的 Microsoft Entra ID 租使用者中,您就可以使用 Azure 入口網站來設定訂用帳戶之間的作用中異地複寫。
- 若要在不同的 Microsoft Entra ID 租用戶中,在不同於主要複本的訂用帳戶的訂用帳戶中建立異地次要複本,請使用在訂用帳戶中建立異地次要複本和 Microsoft Entra ID 租用戶 T-SQL 教學課程。
- 跨訂用帳戶異地複寫作業 (包括設定與異地容錯移轉) 也支援使用資料庫建立或更新 REST API。
新增次要資料庫
下列步驟會在異地複寫合作關係中建立新的次要資料庫。
若要新增次要資料庫,您必須是訂用帳戶擁有者或共同擁有者。
次要資料庫的名稱會與主要資料庫相同,並且預設會具有相同的服務層級和計算大小。 次要資料庫可以是單一資料庫或集區資料庫。 如需詳細資訊,請參閱以 DTU 為基礎的購買模型和以虛擬核心為基礎的購買模型。 建立並植入次要複本之後,就會開始從主要資料庫將資料複寫到新的次要資料庫。
如果您的次要複本僅用於災害復原 (DR),而且沒有任何讀取或寫入工作負載,您可以在設定新的作用中異地複寫關聯圖時指定待命資料庫,從而節省授權成本。 如需詳細資訊,請參閱免授權待命複本。
注意
若合作夥伴資料庫已經存在 (例如,因為終止先前的異地複寫關聯性所導致),則命令會失敗。
在 Azure 入口網站中,瀏覽至您想要為「異地複寫」設定的資料庫。
在 [SQL Database] 頁面上選取您的資料庫,捲動至 [資料管理] 並選取 [複本],然後選取 [建立複本]。
選取您的異地次要資料庫 [訂用帳戶] 和 [資源群組]。
選取或建立次要資料庫的伺服器,並視需要設定 [計算 + 儲存體] 選項。 您可以為次要伺服器選取任何區域,但建議使用成對的區域。
(選擇性) 您可以將次要資料庫新增至彈性集區。 若要在集區中建立次要資料庫,請選取 [要使用 SQL 彈性集區嗎?] 旁邊的 [是],然後選取目標伺服器上的集區。 集區必須已存在目標伺服器上。 此工作流程不會建立集區。
選取 [檢閱 + 建立],並檢閱資訊,然後選取 [建立]。
如此將會建立次要資料庫,並會開始部署程序。
完成部署程序時,次要資料庫會顯示其狀態。
返回 [主要資料庫] 頁面,然後選取 [複本]。 您的次要資料庫會列在 [異地複本] 下。
起始容錯移轉
次要資料庫可被切換成為主要資料庫。
在 Azure 入口網站 中,瀏覽至「異地複寫」合作關係中的主要資料庫。
捲動至 [資料管理],然後選取 [複本]。
在 [異地複寫] 清單中,選取想要成為新的主要資料庫的資料庫,再選取省略符號,然後選取 [強制容錯移轉]。
按一下 [是],即可開始容錯移轉。
命令會立即將次要資料庫切換為主要角色。 此處理序通常應會在 30 秒或更短的時間內完成。
切換角色時,會有一小段時間無法使用這兩個資料庫 (大約為 0 到 25 秒)。 如果主要資料庫有多個次要資料庫,此命令會自動重新設定其他次要複本以連接至新的主要複本。 在正常情況下,完成整個作業所需的時間應該少於一分鐘。
移除次要資料庫
此作業會永久停止對次要資料庫的複寫,並會將次要資料庫的角色,變更為一般讀寫資料庫。 若與次要資料庫的連線中斷,命令仍會成功,但次要資料庫必須等到連線回復後,才會變成讀寫資料庫。
- 在 Azure 入口網站 中,瀏覽至「異地複寫」合作關係中的主要資料庫。
- 選取 [複本]。
- 在 [異地複本] 清單中,選取您想要從異地複寫合作關係中移除的資料庫,再選取省略符號,然後選取 [停止複寫]。
- 隨即開啟確認視窗。 選取 [是],從異地複寫合作關係中移除資料庫。 (將它設定為讀寫資料庫不屬於任何複寫的一部分。)
跨訂閱異地複寫
- 若要在相同的 Microsoft Entra 租用戶中,在不同於主要複本的訂用帳戶的訂用帳戶中建立異地次要複本,可以使用 Azure 入口網站或本節中的步驟。
- 若要在不同的 Microsoft Entra 租用戶中,在不同於主要複本的訂用帳戶的訂用帳戶中建立異地次要複本,您必須如本節中的步驟所述使用 SQL 驗證和 T-SQL。 當邏輯伺服器位於不同的 Azure 租用戶中時,不支援跨訂用帳戶異地複寫的 Microsoft Entra 驗證
將執行本例中的 T-SQL 命令的用戶端機器 IP 位址,新增至主要和次要伺服器兩者的伺服器防火牆。 您可以在從相同用戶端電腦連線到主要伺服器時執行下列查詢,以確認該 IP 位址。
select client_net_address from sys.dm_exec_connections where session_id = @@SPID;
如需詳細資訊,請參閱 Azure SQL Database 和 Azure Synapse IP 防火牆規則。
在主要伺服器的
master
資料庫中,建立專用於作用中異地複寫設定的 SQL 驗證登入。 視需要調整登入名稱和密碼。create login geodrsetup with password = 'ComplexPassword01';
在相同的資料庫中,建立登入的使用者,並將其新增至
dbmanager
角色:create user geodrsetup for login geodrsetup; alter role dbmanager add member geodrsetup;
記下新登入的 SID 值。 使用下列查詢來取得 SID 值。
select sid from sys.sql_logins where name = 'geodrsetup';
連線至主要資料庫 (而非
master
資料庫),並建立使用者以用於相同登入。create user geodrsetup for login geodrsetup;
在相同的資料庫中,將使用者新增至
db_owner
角色。alter role db_owner add member geodrsetup;
在次要伺服器的
master
資料庫中,使用相同名稱、密碼和 SID 建立與主要伺服器相同的登入。 將下列範例命令中的十六進位 SID 值,取代為在步驟 4 中取得的值。create login geodrsetup with password = 'ComplexPassword01', sid=0x010600000000006400000000000000001C98F52B95D9C84BBBA8578FACE37C3E;
在相同的資料庫中,建立登入的使用者,並將其新增至
dbmanager
角色。create user geodrsetup for login geodrsetup; alter role dbmanager add member geodrsetup;
使用新的
geodrsetup
登入連線到主要伺服器上的master
資料庫,並在次要伺服器上起始建立異地次要資料庫。 視需要調整資料庫名稱和次要伺服器名稱。 執行命令之後,您可以查詢主要資料庫中的 sys.dm_geo_replication_link_status 檢視,以及主要伺服器上master
資料庫中的 sys.dm_operation_status 檢視,監視建立異地次要資料庫。 建立異地次要資料庫所需的時間取決於主要資料庫大小。alter database [dbrep] add secondary on server [servername];
成功建立異地次要資料庫之後,就可以移除為此程序所建立的使用者、登入和防火牆規則。