AlwaysOn AG,帶故障轉移的 DTC
**問題:**如何在 AlwaysOn 可用性組 (AG) 中的所有伺服器上執行分佈式事務協調器 (DTC)?我不需要維護故障轉移/切換事件的事務。
**設置:**我有一個帶有三台 Windows 2008 R2 伺服器的 Windows 故障轉移集群 (WSFC),它們都在執行 SQL 2012。兩台伺服器位於一個數據中心,是 AlwaysOn 故障轉移集群 (FCI) 的一部分,而第三台伺服器在第二個數據中心。WSFC 是一個多子網集群。這是設置的草圖:
我已經能夠安裝和配置 DTC 以在兩個 FCI 節點之間工作,因為它們位於同一子網並共享儲存。我已經配置了幾個 AG,它們執行良好。此螢幕截圖顯示 FCI 上安裝的 DTC:
此螢幕截圖顯示我可以在 FCI 節點之一上配置 DTC(無論哪個處於活動狀態):
我想將使用 DTC 的應用程序遷移到此集群並使用 AG。我讀過 AG(參考)不支持 DTC。我一直無法找到在第二個數據中心的第三個節點上配置 DTC 的方法。當我嘗試在第三個節點上配置 DTC 時,它似乎不可用,如下圖所示:
在 Brent Ozar 的可用性組免費設置清單 PDF中,他列出了:
集群安裝…
29. 如果涉及 FCI,請根據規劃部分的決定配置 DTC。
在關於SQL Server 2012 AlwaysOn 可用性組的評論中,Rock Brent 說:“……當 AG 執行時沒有任何變化。請記住,當故障轉移到另一個副本時,可用性組中的數據庫不支持事務一致性。 ..”
這使得 DTC 似乎可以在可用性組中使用,只要您了解事務不會在 AG 切換中維護。我不需要它來維護來自 FCI 節點的事務。我只需要 DTC 可供應用程序在發生災難性災難(我失去了我的主數據中心)的情況下使用。
如何在我的第三個節點上配置 DTC?或者,是不是我在使用 AG 和需要 DTC 的應用程序時運氣不好?
**更新:**我確定的解決方案是使用日誌傳送。但是,在故障轉移的情況下,我仍然需要在 Node3 上提供 DTC。我發現它可以通過解除安裝在 Node1 和 Node2 之間共享的 DTC 的群集 MSDTC-MSSQLSERVERCLU 實例來使用。刪除後,我可以在 Node3 上設置和配置 LocalDTC 實例。之後,我可以重新安裝群集 MSDTC-MSSQLSERVERCLU 實例。按該順序執行安裝順序似乎有效。我已經這樣跑了一段時間了,我還沒有發現任何不良影響。這似乎也適用於執行 AlwaysOn 可用性組。我知道分佈式事務不會在 AG 故障轉移中保留,我只需要新的事務在故障轉移後工作。但我沒有
以利亞。這裡有兩個單獨的問題:
1. AlwaysOn 可用性組是否支持 DTC?
您使用的是 SQL Server 2012,根據 Microsoft 的文件,答案是否定的。我完全理解您無論如何都想嘗試它,但請記住,您現在正在將微軟根本不支持的東西投入生產,並且您正在一起使用兩個獨立的利基功能(AG 和 DTC)。如果出現任何問題,您將進入一個受傷的世界。這不是我在生產中嘗試過的事情。
請記住,如果您的經理髮現您部署了 Microsoft 在大字中明確指出的某些內容,“您不能這樣做”,並且您遇到任何類型的中斷,您必須致電 Microsoft 尋求支持,您將有一些醜陋的解釋要做。
從技術上講,從 SQL Server 2016 SP2 及更高版本開始支持 DTC,但這只是意味著您可以選擇哪個數據庫在故障轉移時失去數據,並且應用程序不知道數據已永久失去。這不是普通數據庫管理員所說的 DTC 支持。
2、多節點、多子網集群應該如何配置DTC?
閱讀Allan Hirt 關於在集群中使用多個 SQL Server 實例配置 DTC 的文章,並確保也閱讀了文章中的所有連結。