共用方式為


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

適用於: Azure SQL 資料庫

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

每個資料庫均已設定作用中異地複寫功能。 若要對資料庫群組執行容錯移轉,或如果您的應用程式需要穩定的連線端點,請考慮改用容錯移轉群組

必要條件

新增次要資料庫

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

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

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

如果您的次要複 本僅用於 災害復原(DR),而且沒有任何讀取或寫入工作負載,您可以在設定新的作用中異地復寫關聯性時指定資料庫供待命,藉以節省授權成本。 如需詳細資訊,請參閱免授權待命複本

注意

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

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

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

    顯示 [設定異地複寫] 選項的螢幕擷取畫面。

  3. 選取您的異地次要資料庫 [訂用帳戶] 和 [資源群組]

    顯示訂用帳戶和資源群組的 Azure 入口網站的螢幕擷取畫面。

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

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

  5. 選取 [檢閱 + 建立],並檢閱資訊,然後選取 [建立]。

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

    顯示次要資料庫的部署狀態螢幕擷取畫面。

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

    顯示部署後次要資料庫狀態的螢幕擷取畫面。

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

    顯示 SQL 資料庫主要和異地複本的螢幕擷取畫面。

起始容錯移轉

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

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

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

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

    顯示從下拉式清單中選取強制容錯移轉的螢幕擷取畫面。

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

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

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

移除次要資料庫

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

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

跨訂閱異地複寫

  • 若要在相同的 Microsoft Entra 租用戶中,在不同於主要複本的訂用帳戶的訂用帳戶中建立異地次要複本,可以使用 Azure 入口網站或本節中的步驟。
  • 若要在不同的 Microsoft Entra 租用戶中,在不同於主要複本的訂用帳戶的訂用帳戶中建立異地次要複本,您必須如本節中的步驟所述使用 SQL 驗證和 T-SQL。 當邏輯伺服器位於不同的 Azure 租使用者時,不支援 Azure SQL 的跨訂用帳戶異地復寫Microsoft項目驗證
  1. 將執行本例中的 T-SQL 命令的用戶端機器 IP 位址,新增至主要和次要伺服器兩者的伺服器防火牆。 您可以在從相同用戶端電腦連線到主要伺服器時執行下列查詢,以確認該 IP 位址。

    SELECT client_net_address
    FROM sys.dm_exec_connections
    WHERE session_id = @@SPID;
    

    如需詳細資訊,請參閱 Azure SQL Database 和 Azure Synapse IP 防火牆規則

  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. 成功建立異地次要資料庫之後,就可以移除為此程序所建立的使用者、登入和防火牆規則。