群集中的MS DTC分布式事务协调器

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有如下缺点:

  1. 隔离性不好,因为所有应用程序都共享单独的DTC
    由于所有的应用程序或者服务都共享同一个DTC,当因为某个应用程序故障导致DTC不可用时候,其它应用程序和服务也都无法访问DTC
  2. 性能不好
    性能可能不够理想,比如当DTC需要处理一个不在本节点上一个应用程序的分布式事物时候,DTC延迟时间可能超过应用程序容忍的最大时间,导致服务超时或者故障转移.

Windows Server 2008故障转移群集可安装多站点DTC,提供了主动/主动的支持,有如下优点:

  1. 一个群集中的应用程序失败不会影响其他群集中的应用程序.
  2. 性能延迟问题减轻

    每个节点可以有一个非常接近的DTC资源.减轻延迟的影响.

本地MSDTC

群集的所有节点可以独立安装本地DTC,如下图所示群集组Myclustergrp1有自己的默认DTC和本地DTC.

Multiple MSDTC

群集组还可以安装多个DTC实例,可以设置每个群集应用程序对应各自的DTC资源.如下图所示,一般情况下若群集应用程序有自己的DTC资源,则使用该DTC进行分发事务.若没有,则会使用群集资源里的其他DTC,若群集组里也没有,就会使用本地DTC.

时间: 2024-10-08 09:00:59

群集中的MS DTC分布式事务协调器的相关文章

SqlServer & Windows 可更新订阅立即更新启用分布式事务协调器(MSDTC)

原文:SqlServer & Windows 可更新订阅立即更新启用分布式事务协调器(MSDTC) 在可更新订阅中,在订阅设置更新方法,将 "排队更新" 设置为 "立即更新" 接着在订阅数据库更新表数据,出错: 消息 21079,级别 16,状态 1,过程 sp_getpublisherlink,第 52 行 没有发布服务器的 RPC 安全信息,或该信息无效.请用 sp_link_publication 指定该信息. 消息 20512,级别 16,状态 1,

已禁用对分布式事务管理器(MSDTC)的网络访问。请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问。

已禁用对分布式事务管理器(MSDTC)的网络访问.请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问. 此错误好像只有sql server2005才有,2008数据库以后版本就没有此错误了. 与基础事务管理器的通信失败. .net 代码里 写事务代码 如: using System.Transactions; using (TransactionScope ts = new TransactionScope()) { } ts.Complete(); DTC登陆账户为

使用TransactionScope做分布式事务协调

//场景是使用在多个数据库之间的协调,.NET 2.0使用一个新的类型 TransactionScope来进行协调,这与之前的COM+协调是相对来说更加方便的 //需要引用一个新的程序集:System.Transactions//需要特别注意一个地方,TransactionScope默认使用的事务隔离级别为串行化,那可能会太过于严格.所以应该根据需要进行必要的调整 //注意:还是需要MSDTC服务支持的.请用net start msdtc启用它 TransactionOptions option

本地事务和分布式事务工作实践 【转】

一:从事务的历史说起 知已知彼,百战不败.想了解事务,我们从事务的历史说起. 在Windows平台上,事务的概念最开始出现在关系型数据库中,但是随着.net平台的发展,事务包括的的范围也越来越宽,先一睹为快, 在关系型数据库中的事务是通过begin transaction,rollback transaction, commit 等关键字来实现事务的. BEGIN TRANSACTION  UPDATE [dbo].[T_ACCOUNT] SET BALANCE = BALANCE + @amo

本地事务和分布式事务工作实践

一:从事务的历史说起 知已知彼,百战不败.想了解事务,我们从事务的历史说起. 在Windows平台上,事务的概念最开始出现在关系型数据库中,但是随着.net平台的发展,事务包括的的范围也越来越宽,先一睹为快, 在关系型数据库中的事务是通过begin transaction,rollback transaction, commit 等关键字来实现事务的. BEGIN TRANSACTION  UPDATE [dbo].[T_ACCOUNT] SET BALANCE = BALANCE + @amo

本地事务和分布式事务工作实践 [转]

一:从事务的历史说起 知已知彼,百战不败.想了解事务,我们从事务的历史说起. 在Windows平台上,事务的概念最开始出现在关系型数据库中,但是随着.net平台的发展,事务包括的的范围也越来越宽,先一睹为快, 在关系型数据库中的事务是通过begin transaction,rollback transaction, commit 等关键字来实现事务的. BEGIN TRANSACTION  UPDATE [dbo].[T_ACCOUNT] SET BALANCE = BALANCE + @amo

WCF分布式开发步步为赢(12):WCF事务机制(Transaction)和分布式事务编程

今天我们继续学习WCF分布式开发步步为赢系列的12节:WCF事务机制(Transaction)和分布式事务编程.众所周知,应用系统开发过程中,事务是一个重要的概念.它是保证数据与服务可靠性的重要机制. 作为面向服务应用的开发平台,WCF也提供了对事物编程模型的支持..NET 2.0提供的System.Transactions类来开发事务应用程序.同样WCF也支持事务特性,WCF事务机制是什么,它与微软已有的技术如Microsoft 分布式事务协调器 (MSDTC)有何关系?与Enterpise

alwaysOn为什么不支持分布式事务

Alwayson是微软从SQL2012开始引入的一种高可用和高性能架构,它既可以实现故障转移,同时又能实现查询分离,是当前SQL server的所有架构中最优秀的一种. 因此,一般我们都会推荐使用AlwaysON来部署生产数据库,不过,尽管AlwaysON的优势非常明显,但并非适应于所有的业务场景. AlwaysON不支持分布式事务和跨数据库事务 什么是分布式事务和跨数据库事务 分布式事务是指通过分布式事务协调器(MSDTC)的统一控制.将事务中的每个操作分解到多台主机上分别执行.每台主机执行成

LCN分布式事务管理(一)

前言 好久没写东西了,9月份换了份工作,一上来就忙的要死.根本没时间学东西,好在新公司的新项目里面遇到了之前没遇到过的难题.那遇到难题就要想办法解决咯,一个请求,调用两个服务,同时操作更新两个数据库.这就带来事务不一致的问题了,分布式事务管理被强行拉出来了.导致原本两个springboot的单体项目,必须要协同管理起来.刚好微服务也接触过,小试牛刀咯. 框架介绍 LCN分布式事务框架其本身并不创建事务,而是基于对本地事务的协调从而达到事务一致性的效果 核心步骤 创建事务组是指在事务发起方开始执行