以使用者起始的手動容錯移轉重新啟動執行個體 - Azure SQL 受控執行個體

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

本文說明如何使用 PowerShell、Azure CLI 或 REST API,執行手動使用者起始容錯移轉至次要計算節點,以重新啟動Azure SQL 受控執行個體

您可以容錯移轉一般用途 (GP) 和業務關鍵 (BC) 服務層上的主要節點,以及手動容錯移轉 BC 服務層上的次要唯讀複本節點。

注意

本文中的容錯移轉是指在次要節點上啟動 SQL Server 資料庫引擎程式,且與容錯移轉群組的跨區域容錯移轉無關。

使用手動容錯移轉的時機

可用性是 SQL 受管理執行個體平台的基本部分,可藉由提供本機待命計算節點來裝載 SQL Server 資料庫引擎程序,以透明方式為資料庫應用程式運作。 當 SQL Server 資料庫引擎程序在主要計算節點上離線且在次要計算節點上線時,就會發生容錯移轉。 一般而言,SQL 受控執行個體計算節點之間的容錯移轉,會在偵測到錯誤、節點已降級或定期每月軟體更新期間由平台自動管理。

整個容錯移轉作業包含讓次要節點上的 SQL Server 資料庫引擎程序上線、驗證資料庫狀態,最後將用戶端連線重新導向至新的主要節點。 在容錯移轉作業的最後一個步驟中,用戶端連線只會在短時間內失敗 (通常不到一分鐘)。

您可能會出於下列原因執行手動容錯移轉,以在不同的節點上重新啟動引擎程序:

  • 登入失敗,或因效能問題而變慢。
  • 在部署至生產環境之前,測試應用程式的容錯移轉復原。
  • 測試端對端系統在自動容錯移轉時的錯誤復原。
  • 測試容錯移轉對現有資料庫工作階段的影響。
  • 查詢效能降低 (重新啟動執行個體有助於減輕效能問題)。

在部署至生產環境之前,確保您的應用程式具有容錯移轉復原功能,有助於降低生產環境中應用程式錯誤的風險,並且會為您的客戶提供應用程式可用性。 使用下列影片深入了解如何測試應用程式以取得雲端整備程度:

下表描述根據服務層級和可用性模型,SQL 受控執行個體在容錯移轉作業期間的預期行為:

服務層級 可用性模型 預期的容錯移轉行為 潛在的容錯移轉行為 (例外狀況)
一般用途 本機備援
(單一可用性區域)
SQL 程序會在相同的 VM 上重新啟動。 SQL 程序在不同的 VM 上重新啟動。
一般用途 區域備援 (預覽版)
(多個可用性區域)
SQL 程序會在相同的 VM 上重新啟動。 SQL 程序在不同的 VM 上重新啟動。
業務關鍵 本機備援
(單一可用性區域)
隨機次要複本會升階為主要複本。 N/A
業務關鍵 區域備援
(多個可用性區域)
隨機次要複本會在相同或不同的可用性區域中升階為主要複本。 N/A

權限

起始容錯移轉的使用者需要具有下列其中一個 Azure 角色:

  • 「訂用帳戶擁有者」角色,或
  • SQL 受控執行個體參與者角色或
  • 有下列權限的自訂角色:
    • Microsoft.Sql/managedInstances/failover/action

使用手動容錯移轉重新啟動執行個體

您可以使用 PowerShell、Azure CLI 或 REST API 重新啟動手動容錯移轉的執行個體。

Az.Sql 的最小版本需要是 2.9.0 版。 請考慮使用 Azure 入口網站中一律具有最新 PowerShell 版本的 Azure Cloud Shell

必要條件是使用下列 PowerShell 指令碼來安裝所需的 Azure 模組。 此外,請選取您想要容錯移轉的 SQL 受控執行個體所在的訂用帳戶。

$subscription = 'enter your subscription ID here'
Install-Module -Name Az
Import-Module Az.Accounts
Import-Module Az.Sql

Connect-AzAccount
Select-AzSubscription -SubscriptionId $subscription

搭配使用 PowerShell 命令 Invoke-AzSqlInstanceFailover 與下列範例,以起始主要節點的容錯移轉,這同時適用於 BC 和 GP 服務層。

$ResourceGroup = 'enter resource group of your MI'
$ManagedInstanceName = 'enter MI name'
Invoke-AzSqlInstanceFailover -ResourceGroupName $ResourceGroup -Name $ManagedInstanceName

使用下列 PowerShell 命令以容錯移轉讀取次要節點,這僅適用於 BC 服務層。

$ResourceGroup = 'enter resource group of your MI'
$ManagedInstanceName = 'enter MI name'
Invoke-AzSqlInstanceFailover -ResourceGroupName $ResourceGroup -Name $ManagedInstanceName -ReadableSecondary

監視容錯移轉

監視使用者起始容錯移轉進度的方法,在業務關鍵和一般用途服務層級中的執行個體皆有所不同。

若要監視使用者起始容錯移轉的進度,請使用:

  • sys.dm_os_sys_info 可檢查一般用途服務層級的系統運行時間。
  • sys.dm_hadr_fabric_replica_states 可檢查業務關鍵服務層級的可用性複本。

容錯移轉程序的最後一個步驟,是將用戶端連線重新導向至新的主要節點。 在容錯移轉期間,用戶端連線短暫中斷 (通常會在一分鐘內穩定) 會指出容錯移轉成功,而不論服務層級為何。

一般用途服務層級

下列 T-SQL 範例顯示一般用途服務層級節點上 SQL 程序的運行時間:

SELECT sqlserver_start_time, sqlserver_start_time_ms_ticks FROM sys.dm_os_sys_info

SQL 程序的開始時間是節點上啟動 SQL Server 資料庫引擎程序的時間。 容錯移轉完成之後重新啟動的時間。 在一般用途服務層級中起始執行個體的容錯移轉之前和之後執行此查詢,以監視容錯移轉作業的進度。

業務關鍵服務層級

下列 T-SQL 範例指出哪個節點目前是業務關鍵服務層級的主要複本:

SELECT DISTINCT replication_endpoint_url, fabric_replica_role_desc FROM sys.dm_hadr_fabric_replica_states

在容錯移轉完成之後,裝載主要複本的節點會變更。 在業務關鍵服務層級中起始執行個體的容錯移轉之前和之後執行此查詢,以監視容錯移轉作業的進度。

注意

高強度工作負載期間,完整容錯移轉程序可能需要幾分鐘的時間才能完成,因為執行個體引擎需要確保次要節點上的交易,能夠與起始容錯移轉之前主要節點的交易同步。

限制

請考量使用者起始手動容錯移轉的下列功能限制:

  • 在相同的 SQL 受控執行個體上,每隔 15 分鐘可能僅會起始一 (1) 次容錯移轉。
  • 不允許容錯移轉:
    • 直到自動備份系統完成新資料庫的第一個完整備份。
    • 如果資料庫還原正在進行中。
  • 針對業務關鍵服務層級中的執行個體:
    • 必須要有複本的仲裁,才能接受容錯移轉要求。
    • 無法指定要在哪個可讀取次要複本上起始容錯移轉。