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