Sql-Server

SQL Server 2017 分佈式可用性組

  • October 31, 2020

我的環境是 SQL Server 2017 分佈式可用性組,詳細資訊如下:

將 SQL 分佈式 AG 從 DC1 配置到 DC2。

  • DC1(生產):TEMPDB1 和 TEMPDB2(託管在 WSFC1 上)
  • DC2 (DR):TEMPDB3 和 TEMPDB4(託管在 WSFC2 上)
  • DC1 和 DC2 位於兩個不同的地理位置
  • DC1 不可用(關閉)。

請就以下場景提出建議:

  • 需要在 DC2 上執行哪些步驟/命令才能將其作為作品引入?
  • 一旦 DC1 啟動/執行,需要在 DC2 和 DC1 中執行哪些步驟/命令才能使 DC1 成為產品?

以下是 2 個 DC 的狀態截圖

DC1-AG DC1 關機前的狀態: 在此處輸入圖像描述

DC1 關機前的 DC2-AG 狀態: 在此處輸入圖像描述

DC1 關閉後的 DC2-AG 狀態: 在此處輸入圖像描述

DC1關機後,嘗試訪問DC2-DB1,報錯。 在此處輸入圖像描述

如下所述更改了 DC2-AG2 屬性(允許 R/W 連接和可讀輔助 = 是) 在此處輸入圖像描述

更改屬性後,我可以訪問 DB1,但無法在 DC2-DB1 中執行任何 DML 操作。 在此處輸入圖像描述

此 DB 應允許所有操作,因為應用程序在 DC1 關閉期間指向 DC2-DB。

請就此提出建議/建議。

DC 1 關閉後,由於您的輔助可用性組

$$ distributedag $$是非同步的並且處於手動故障轉移模式,它仍然是次要角色,所以你需要連接到$$ distributedag $$監聽器並執行命令:

USE master
ALTER AVAILABILITY GROUP [distributedag] FORCE_FAILOVER_ALLOW_DATA_LOSS

這將強制您在 DC2 的輔助 AG 成為主 AG,並使其進入讀寫狀態

如果您在談論進行 DC1 控制關機,正如您的評論之一所暗示的那樣,AKA 會在不失去數據的情況下故障轉移到 DC2。

當 DC1 和 DC2 都線上時:

You need to change the 2ndarys in DC2 to synchronous mode.

make sure all the ownership settings of the objects in the Windows failover cluster are set so DC2 can take ownership of the cluster and the AOAG.

Perform a normal fail over to DC2

Change to 2ndarys in DC1 to a-sync mode.

Now you can shutoff DC1.

如果您談論的是 DR 事件,也就是 DC1 的意外關閉,

此命令將強制故障轉移到非同步副本:

USE master
ALTER AVAILABILITY GROUP [distributedag] FORCE_FAILOVER_ALLOW_DATA_LOSS

一旦 DC1 恢復,您將不得不在 DC1 節點上重新設定數據庫的種子。基本上

stop backups in DC2, 

Take a full backup and take a Log backup.

Restore the Full and Log to the DC1 secondaries with NORECOVERY

Then you can rejoin the Nodes and databases to the availability group.

您必須這樣做,因為兩端的日誌鏈不同,您必須撤消 DC1 端失去的事務,並重做 DC1 離線時發生在 DC2 端的所有事務。

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