共用方式為


容錯移轉連結 - Azure SQL 受控執行個體

適用於:Azure SQL 受控執行個體

本文說明如何使用 SQL Server Management Studio (SSMS) 或 PowerShell 針對 SQL Server 與 Azure SQL 受控執行個體之間連結的資料庫進行容錯移轉,以便進行災害復原或移轉。

必要條件

若要透過連結將您的資料庫容錯移轉至次要複本,必須符合下列必要條件:

  • 有效的 Azure 訂用帳戶。 如果您沒有訂用帳戶,請建立免費帳戶
  • 已安裝支援的 SQL Server 版本與必要的服務更新。
  • 在主要和次要複本之間設定的連結
  • 您可以從 SQL Server 2022 CU13 (KB5036432) 開始,使用 Transact-SQL 故障轉移連結。

停止工作負載

如果您已準備好將資料庫容錯移轉至次要複本,請先在維護期間停止主要複本的任何應用程式工作負載。 這可讓資料庫複寫趕上次要複寫,以便您可容錯移轉至次要複本,而不會遺失資料。 在容錯移轉之前,請確定您的應用程式不會認可異動至主要複本。

容錯移轉資料庫

您可以使用 Transact-SQL (T-SQL)、SQL Server Management Studio 或 PowerShell,來容錯移轉連結的資料庫。

您可以從 SQL Server 2022 CU13 (KB5036432) 開始,使用 Transact-SQL 故障轉移連結。

若要對連結執行計劃性容錯移轉,請在主要複本上使用下列 T-SQL 命令:

ALTER AVAILABILITY GROUP [<DAGname>] FAILOVER

若要執行強制容錯移轉,請在次要複本上使用下列 T-SQL 命令:

ALTER AVAILABILITY GROUP [<DAGname>] FORCE_FAILOVER_ALLOW_DATA_LOSS

在容錯移轉之後檢視資料庫

針對 SQL Server 2022,如果您選擇維護連結,您可以檢查分散式可用性群組是否存在於 SQL Server Management Studio 物件總管可用性群組

如果您在容錯移轉期間卸除連結,您可使用 [物件總管] 來確認分散式可用性群組已不存在。 如果您選擇保留可用性群組,資料庫仍會進行同步處理

容錯移轉後清除

除非選取容錯移轉成功之後移除連結,否則使用 SQL Server 2022 進行容錯移轉不會中斷連結。 您可以在容錯移轉之後維護連結,這會讓可用性群組與分散式可用性群組處於作用中狀態。 無須進行任何進一步的動作。

卸除連結只會卸除分散式可用性群組,可用性群組則保持作用中狀態。 您可以決定保留可用性群組,或將其卸除。

如果您決定卸除可用性群組,請取代下列值,然後執行範例 T-SQL 程式碼:

  • <AGName> 使用 SQL Server 上的可用性群組 (用來建立連結的群組) 的名稱。
-- Run on SQL Server
USE MASTER
GO
DROP AVAILABILITY GROUP <AGName> 
GO

在強制容錯移轉之後狀態不一致

在強制故障轉移之後,您可能會遇到核心分裂案例中的兩個複本都具有主要角色,致使連結處於不一致狀態。 如果您在災害期間容錯移轉至次要複本,然後重新上線主要複本,就會發生這種情況。

首先,請確認您處於核心分裂案例中。 您可以使用 SQL Server Management Studio (SSMS) 或 Transact-SQL (T-SQL) 執行此動作。

連線到 SSMS 中的 SQL Server 和 SQL 受控執行個體,然後在 [物件總管] 中,展開 [Always On 高可用性] 中 [可用性群組] 節點下的 [可用性複本]。 如果兩個不同的複本皆列為 (主要),您就會處於核心分裂案例中。

或者,您可以在 SQL Server 和 SQL 受控執行個體兩者上執行下列 T-SQL 腳本,以檢查複本角色:

-- Execute on SQL Server and SQL Managed Instance 

declare @link_name varchar(max) = '<DAGName>' 
USE MASTER 
GO

SELECT
   ag.name [Link name], 
   rs.role_desc [Link role] 
FROM
   sys.availability_groups ag 
   join sys.dm_hadr_availability_replica_states rs 
   on ag.group_id = rs.group_id 
WHERE 
   rs.is_local = 1 and ag.name = @link_name 
GO

如果這兩個執行個體在 [連結角色] 資料行中列出不同的主要,您就會處於核心分裂案例中。

若要解決核心分裂狀態,請先在任意複本上備份原始的主要複本。 如果原始主要復本是 SQL Server,請進行結尾記錄備份。 如果原始主要復本是 SQL 受控執行個體,請進行完整備份拷貝複本。 備份完成之後,請將分散式可用性群組設定為複本的次要角色,這些複本曾是原始主要複本,但現在是新次要複本。

例如,在發生真正的災害事件時,假設您已強制將 SQL Server 工作負載故障轉移至 Azure SQL 受控執行個體,而且您想繼續在 SQL 受控執行個體 上執行工作負載、在 SQL Server 上進行尾日誌備份,然後將分散式可用性群組設定為 SQL Server 上的次要角色,類似以下範例:

--Execute on SQL Server 
USE MASTER

ALTER availability group [<DAGName>] 
SET (role = secondary) 
GO 

接下來,使用連結執行從 SQL 受控執行個體 到 SQL Server 的規劃的手動容錯移轉,類似以下範例:

--Execute on SQL Managed Instance 
USE MASTER

ALTER availability group [<DAGName>] FAILOVER 
GO 

若要使用連結:

若要深入了解連結:

針對其他複寫和移轉案例,請考慮: