MS DTC在大多數SQL 服務器下都需要安裝,若只是安裝數據庫引擎或Analysis 服務可不安裝DTC。如果后需要使用分布式事務,則可在SQL Server群集安裝完成后再安裝DTC。
一、群集MS DTC安裝
與正常添加群集服務類似在故障轉移管理器,右擊服務和應用程序à配置服務和應用程序。
需要為DTC分配IP。如下圖所示,此為跨子網群集,因此要在配置兩個虛擬IP。
在安裝DTC的時候最好的做法是使用獨立的共享磁盤,以免DTC數據影響數據庫存儲磁盤數據的使用。如下圖所示
二、MS DTC故障轉移方式
與SQL Server服務故障轉移類似,當群集指定某個節點的DTC失敗,則將通過仲裁,將DTC服務轉移到其他節點上。IP和磁盤資源也將重新綁定到新節點上。
在新的節點上,重啟的DTC將讀取共享磁盤上DTC的日志文件,來確定未處理的事務和最近解決的事務。如下圖所示,DTC在B節點上運作,若B節點失敗,服務器將轉移到A節點上,DTC事務管理器將持續讀取共享磁盤DTC Log,重新運作。
三、群集MSDTC與本地MSDTC
Windows 2003及以前版本僅支持在整個Windows 群集上創建一個MSDTC實例,但一個MSDTC有如下缺點:
- 隔離性不好,因為所有應用程序都共享單獨的DTC
由於所有的應用程序或者服務都共享同一個DTC,當因為某個應用程序故障導致DTC不可用時候,其它應用程序和服務也都無法訪問DTC - 性能不好
性能可能不夠理想,比如當DTC需要處理一個不在本節點上一個應用程序的分布式事物時候,DTC延遲時間可能超過應用程序容忍的最大時間,導致服務超時或者故障轉移.
Windows Server 2008故障轉移群集可安裝多站點DTC,提供了主動/主動的支持,有如下優點:
- 一個群集中的應用程序失敗不會影響其他群集中的應用程序.
-
性能延遲問題減輕
每個節點可以有一個非常接近的DTC資源.減輕延遲的影響.
本地MSDTC
群集的所有節點可以獨立安裝本地DTC,如下圖所示群集組Myclustergrp1有自己的默認DTC和本地DTC.
Multiple MSDTC
群集組還可以安裝多個DTC實例,可以設置每個群集應用程序對應各自的DTC資源.如下圖所示,一般情況下若群集應用程序有自己的DTC資源,則使用該DTC進行分發事務.若沒有,則會使用群集資源里的其他DTC,若群集組里也沒有,就會使用本地DTC.