Availability-Groups

使用 Powershell 的 AlwaysOn 可用性組 DR 故障轉移

  • July 29, 2020

我正在測試環境中為災難恢復 (DR) 設置 AlwaysOn 可用性組。對於 AG1,node1 和 node2(同步送出/自動故障轉移)在 DC1;節點 3 和節點 4(非同步送出/手動故障轉移)位於 DC2 中,文件共享見證位於 DC3 中。當 DR 事件發生時,DC1 中的 2 個節點將消失。由於 DR 節點設置為非同步送出,因此 AG 狀態正在解決。我需要手動進行故障轉移以使 AG 組進入同步狀態。我想使用 powershell 進行數據失去的故障轉移。當我執行以下 powershell 進行故障轉移時,我收到了錯誤消息。

Switch-SqlAvailabilityGroup -Path SQLSERVER:\Sql\SQLDRPOCA03\DEFAULT\AvailabilityGroups\SQLDRPOCAG

Switch-SqlAvailabilityGroup :此 SQL Server 實例上的可用性組“SQLDRPOCAG”的可用性副本不能成為主副本。一個或多個數據庫未同步或未加入可用性組。

如果可用性副本使用非同步送出模式,請考慮執行強製手動故障轉移(可能會失去數據)。否則,一旦所有本地輔助數據庫都加入並同步,您可以執行計劃的手動

故障轉移到此次要副本(沒有數據失去)。有關詳細資訊,請參閱 SQL Server 聯機叢書。

是否可以使用 powershell 進行手動故障轉移?

我認為您試圖通過 powershell 實現的是計劃中的手動故障轉移,如 msdn 連結中所述。這裡

僅當主副本和目標輔助副本在同步送出模式下執行並且目前已同步時,才支持計劃的手動故障轉移。計劃中的手動故障轉移保留輔助數據庫中已加入目標輔助副本上的可用性組的所有數據

而您究竟想要實現“非同步副本之間的故障轉移”更多的是強製手動故障轉移,有/沒有數據失去,這可以通過 TSQL 實現,如同一 msdn 連結中所述。我在那裡沒有看到PS,但可能有人在這裡使用過可以回答。我不確定,但可能你可以檢查 dbatools 如果它提供了一個

完成該文章中最後提到的步驟

無數據失去的手動故障轉移

當主副本可用時使用此方法,但您需要臨時或永久更改配置並更改承載主副本的 SQL Server 實例。為避免潛在的數據失去,在發出手動故障轉移之前,請確保目標次要副本是最新的。

Switch-SqlAvailabilityGroup -Path SQLSERVER:\Sql\SecondaryServer\InstanceName\AvailabilityGroups\MyAg

-AllowDataLoss -Force

我能夠使用上面的 PS 腳本故障轉移到 DR 節點 alwayson 可用性組(非同步送出)。它是帶有數據失去的強製手動故障轉移。

感謝您對問題的回饋。AMMH

引用自:https://dba.stackexchange.com/questions/270945