天天看點

RDS-SQLSERVER不支援MSDTS的原因分析一、Msdtc 的描述及使用方法二、Msdtc的配置:三、RDS不支援的原因:四、     建議解決方案:

msdtc 在就是windows中的一個服務,稱為分布式事務處理服務。它幫助我們實作分布式資料庫伺服器之間集合事務處理,即遠端異地事務處理功能,例如:有多個sql server 伺服器,我們要讓它互相執行更新操作,但又要保證事務的完整性,就要可以開啟msdtc功能進行實作:

sql server 分布式事務腳本舉例:

{

set xact_abort on

being tran

insert into [遠端機器ip].databasename.dbo.tablename(id,name )

select  ‘1’,’遠端’

insert into tablename(id,name)

select ‘1’,’本地’

commit

}

這個語句,啟動了分布式事務, 保證遠端資料庫伺服器和本地資料庫都要插入一條資料,要麼都插入,要麼誰都不插入,保證資料的一緻性。

網上寫的很詳細,我這裡就不一一累述了

參考連結:

http://www.cnblogs.com/ryanding/archive/2010/07/17/1779668.html

1、  msdtc 服務啟動,是依賴于rpc服務的,該服務需要開啟135端口,而我們現在鍊路層在轉發vip時,沒有考慮135端口包的轉發。另外135端口是一個不建議開啟的端口,在黑客有連結使用者名、密碼時可以遠端直接通過該端口控制dbnode節點的,在沒有使用者名密碼的情況也可以通過135端口,擷取伺服器的目錄結構、使用者名、共享目錄等資訊,這些資訊如果被黑客擷取,将是對RDS是緻命的。這個原因跟安全專家林淼進行确認過的。

2、 msdtc 設定時需要用戶端與伺服器端都要配置,通過nt authority\network service進行遠端通路,而且不做驗證。network service 帳戶是一個内置帳戶,比 users 組的成員擁有更多的對資源和對象的通路權限。相當于伺服器的作業系統級别權限,開放給了一個用戶端(或者是使用者)

1、  暫時的處理該需求的方法,建議使用者在應用端實作。

2、  後期可以考慮讓使用者購買兩個rds,來做分布式。這樣是兩個rds主機之間互相暴露,而對使用者(用戶端)沒有直接通路dbnode節點權限的問題。但需要現有的rds考慮兩件事情,一是考慮支援别名通路或者真實ip暴露給使用者的問題 ,二是配置所有節點的msdtc服務。