共用方式為


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

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

本文說明如何使用PowerShell、Azure CLI或REST API執行手動使用者起始的故障轉移來重新啟動 Azure SQL 受控實例

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

注意

本文中的故障轉移是指重新啟動 SQL Server 資料庫引擎程式,與 故障轉移群組的跨區域故障轉移無關。

使用手動容錯移轉的時機

可用性是 SQL 受管理執行個體平台的基本部分,可藉由提供本機待命計算節點來裝載 SQL Server 資料庫引擎程序,以透明方式為資料庫應用程式運作。 當 SQL Server 資料庫引擎進程離線且在相同或另一個計算節點上上線時,就會發生故障轉移。 故障轉移通常是在偵測到錯誤、節點發生性能下降或服務更新期間,由 Azure 平台自動管理。

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

基於下列原因,您可以執行手動故障轉移來重啟引擎程序:

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

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

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

服務層級 可用性模型 預期的容錯移轉行為 潛在的故障轉移行為 (例外狀況)
一般用途 本地冗餘
(單一可用性區域)
SQL 程序會在相同的 VM 上重新啟動。 SQL 程序在不同的 VM 上重新啟動。
一般用途 區域備援
(多個可用性區域)
SQL 程序會在相同的 VM 上重新啟動。 SQL 程序在不同的 VM 上重新啟動。
業務關鍵 本地冗餘
(單一可用性區域)
SQL 程式會在主要複本上重新啟動,或隨機次要複本升階為主要複本。 N/A
業務關鍵 區域備援
(多個可用性區域)
在主副本上重新啟動 SQL 程序,或隨機次要副本會在相同或不同可用性區域中被升為主副本。 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) 次容錯移轉。
  • 不允許容錯移轉:
    • 直到自動備份系統完成新資料庫的第一個完整備份。
    • 如果資料庫還原正在進行中。
  • 針對企業關鍵服務層級的案例:
    • 在接受故障轉移要求之前,複本必須達到法定人數。
    • Invoke-AzSqlInstanceFailover除非-ReadableSecondary已指定 ,否則命令會故障轉移主要複本,在此情況下,可讀取的次要複本會故障轉移。 發出此命令時,不可讀的次要複本不會切換。