教學課程:設定主動異地複寫與容錯移轉 (Azure SQL 資料庫)

適用於:Azure SQL 資料庫

本文顯示如何使用 Azure 入口網站或 Azure CLI,設定主動為 Azure SQL 資料庫異地複寫,並起始容錯移轉。

對於容錯移轉群組,請參閱使用 Azure SQL 資料庫的容錯移轉群組使用 Azure SQL 受控執行個體的容錯移轉群組

必要條件

本教學課程說明如何設定資料庫以進行作用中異地複寫。 若要了解如何使用 Azure 入口網站、Azure CLI、Azure CLI (sql up) 或 PowerShell 建立單一資料庫,請參閱快速入門:建立單一資料庫 - Azure SQL 資料庫

新增次要資料庫

下列步驟會在異地複寫合作關係中建立新的次要資料庫。

若要新增次要資料庫,您必須是訂用帳戶擁有者或共同擁有者。

次要資料庫的名稱會與主要資料庫相同,並且預設會具有相同的服務層級和計算大小。 次要資料庫可以是單一資料庫或集區資料庫。 如需詳細資訊,請參閱以 DTU 為基礎的購買模型以虛擬核心為基礎的購買模型。 建立並植入次要複本之後,就會開始從主要資料庫將資料複寫到新的次要資料庫。

如果您的次要複本用於災害復原 (DR),而且沒有任何讀取或寫入工作負載,您可以在設定新的作用中異地複寫關聯圖時指定待命資料庫,從而節省授權成本。 更多相關資訊,請檢閱無授權待命複本

注意

若合作夥伴資料庫已經存在 (例如,因為終止先前的異地複寫關聯性所導致),則命令會失敗。

  1. Azure 入口網站中,瀏覽至您想要為「異地複寫」設定的資料庫。

  2. 在 [SQL Database] 頁面上選取您的資料庫,捲動至 [資料管理] 並選取 [複本],然後選取 [建立複本]。

    Screenshot that shows the Configure geo-replication option.

  3. 選取或建立次要資料庫的伺服器,並視需要設定 [計算 + 儲存體] 選項。 您可以為次要伺服器選取任何區域,但建議使用成對的區域

    Screenshot that shows the Create and configure replica screen.

    (選擇性) 您可以將次要資料庫新增至彈性集區。 若要在集區中建立次要資料庫,請選取 [要使用 SQL 彈性集區嗎?] 旁邊的 [是],然後選取目標伺服器上的集區。 集區必須已存在目標伺服器上。 此工作流程不會建立集區。

  4. 按一下 [檢閱 + 建立] 以檢閱資訊,然後按一下 [建立]。

  5. 如此將會建立次要資料庫,並會開始部署程序。

    Screenshot that shows the deployment status of the secondary database.

  6. 完成部署程序時,次要資料庫會顯示其狀態。

    Screenshot that shows the secondary database status after deployment.

  7. 返回 [主要資料庫] 頁面,然後選取 [複本]。 您的次要資料庫會列在 [異地複本] 下。

    Screenshot that shows the SQL database primary and geo replicas.

起始容錯移轉

次要資料庫可被切換成為主要資料庫。

  1. Azure 入口網站 中,瀏覽至「異地複寫」合作關係中的主要資料庫。

  2. 捲動至 [資料管理],然後選取 [複本]。

  3. 在 [異地複寫] 清單中,選取想要成為新的主要資料庫的資料庫,再選取省略符號,然後選取 [強制容錯移轉]。

    Screenshot that shows selecting forced failover from the drop-down.

  4. 按一下 [是],即可開始容錯移轉。


命令會立即將次要資料庫切換為主要角色。 此處理序通常應會在 30 秒或更短的時間內完成。

切換角色時,會有一小段時間無法使用這兩個資料庫 (大約為 0 到 25 秒)。 如果主要資料庫有多個次要資料庫,此命令會自動重新設定其他次要複本以連接至新的主要複本。 在正常情況下,完成整個作業所需的時間應該少於一分鐘。

移除次要資料庫

此作業會永久停止對次要資料庫的複寫,並會將次要資料庫的角色,變更為一般讀寫資料庫。 若與次要資料庫的連線中斷,命令仍會成功,但次要資料庫必須等到連線回復後,才會變成讀寫資料庫。

  1. Azure 入口網站 中,瀏覽至「異地複寫」合作關係中的主要資料庫。
  2. 選取 [複本]。
  3. 在 [異地複本] 清單中,選取您想要從異地複寫合作關係中移除的資料庫,再選取省略符號,然後選取 [停止複寫]。
  4. 隨即開啟確認視窗。 按一下 [是] 以從異地複寫合作關係中移除資料庫。 (將它設定為讀寫資料庫不屬於任何複寫的一部分。)

跨訂閱異地複寫

若要在不同於主要資料庫訂用帳戶的訂用帳戶中建立異地次要資料庫 (不論是否位於同一 Microsoft Entra ID [先前稱為 Azure Active Directory] 租用戶下),請遵循本節中的步驟執行。

  1. 將執行本例中的 T-SQL 命令的用戶端機器 IP 位址,新增至主要和次要伺服器兩者的伺服器防火牆。 您可以在從相同用戶端電腦連線到主要伺服器時執行下列查詢,以確認該 IP 位址。

    select client_net_address from sys.dm_exec_connections where session_id = @@SPID;
    

    如需詳細資訊,請參閱設定防火牆 (機器翻譯)

  2. 主要伺服器的 master 資料庫中,建立專用於作用中異地複寫設定的 SQL 驗證登入。 視需要調整登入名稱和密碼。

    create login geodrsetup with password = 'ComplexPassword01';
    
  3. 在相同的資料庫中,建立登入的使用者,並將其新增至 dbmanager 角色:

    create user geodrsetup for login geodrsetup;
    alter role dbmanager add member geodrsetup;
    
  4. 記下新登入的 SID 值。 使用下列查詢來取得 SID 值。

    select sid from sys.sql_logins where name = 'geodrsetup';
    
  5. 連線至主要資料庫 (而非 master 資料庫),並建立使用者以用於相同登入。

    create user geodrsetup for login geodrsetup;
    
  6. 在相同的資料庫中,將使用者新增至 db_owner 角色。

    alter role db_owner add member geodrsetup;
    
  7. 次要伺服器的 master 資料庫中,使用相同名稱、密碼和 SID 建立與主要伺服器相同的登入。 將下列範例命令中的十六進位 SID 值,取代為在步驟 4 中取得的值。

    create login geodrsetup with password = 'ComplexPassword01', sid=0x010600000000006400000000000000001C98F52B95D9C84BBBA8578FACE37C3E;
    
  8. 在相同的資料庫中,建立登入的使用者,並將其新增至 dbmanager 角色。

    create user geodrsetup for login geodrsetup;
    alter role dbmanager add member geodrsetup;
    
  9. 使用新的 geodrsetup 登入連線到主要伺服器上的 master 資料庫,並在次要伺服器上起始建立異地次要資料庫。 視需要調整資料庫名稱和次要伺服器名稱。 執行命令之後,您可以查詢主要資料庫中的 sys.dm_geo_replication_link_status 檢視,以及主要伺服器上 master 資料庫中的 sys.dm_operation_status 檢視,監視建立異地次要資料庫。 建立異地次要資料庫所需的時間取決於主要資料庫大小。

    alter database [dbrep] add secondary on server [servername];
    
  10. 成功建立異地次要資料庫之後,就可以移除為此程序所建立的使用者、登入和防火牆規則。

注意

跨訂用帳戶異地複寫作業 (包括設定與異地容錯移轉) 僅支援使用 REST API 及 T-SQL 命令。

透過私人端點連接到主要伺服器時,則不支援使用 T-SQL 新增異地次要資料庫。 如果已設定私人端點,但允許公用網路存取,即可支援在透過公用 IP 位址連線到主要伺服器的情況下新增異地次要資料庫。 一旦新增異地次要資料庫,就可拒絕公用網路存取

如果主要或次要邏輯伺服器上啟用僅限 Microsoft Entra 驗證,則不支援在不同 Azure 租用戶的邏輯伺服器上建立異地次要資料庫。

下一步