AlwaysOn AG,具有故障转移功能的DTC


14

问题:如何在AlwaysOn可用性组(AG)中的所有服务器上运行分布式事务处理协调器(DTC)?我不需要通过故障转移/切换事件来维护事务。

设置:我有一个Windows故障转移群集(WSFC),其中包含三台都运行SQL 2012的Windows 2008 R2服务器。两台服务器位于一个数据中心,是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的应用程序时我不走运?

更新:我确定的解决方案是使用日志传送。但是,在故障转移的情况下,我仍然需要DTC在Node3上可用。我发现通过卸载在Node1和Node2之间共享的DTC的群集MSDTC-MSSQLSERVERCLU实例,它变得可用。删除后,我可以在Node3上设置和配置LocalDTC实例。之后,我可以重新安装群集的MSDTC-MSSQLSERVERCLU实例。按此顺序执行安装顺序似乎可行。我已经像这样跑了一段时间了,而且还没有发现任何不良影响。似乎这对于运行AlwaysOn可用性组也将起作用。我了解到分布式事务不会在AG故障转移中保留,我只需要新事务即可在故障转移后工作。但是我还没有

Answers:


15

以利亚。这里有两个独立的问题:

1. AlwaysOn可用性组是否支持DTC?

正如微软大声说的那样。我完全理解您仍然想尝试一下,但是请记住,您现在正在将某些产品投入Microsoft根本不支持的生产中,并且您同时使用了两个单独的细分功能(AG和DTC)。如果有任何问题出在哪里,您将处于一个受伤的世界。我什至没有想过要在生产中进行尝试。

请记住,如果您的经理发现您部署了Microsoft特别用粗体字写的内容:“您不能这样做”,而您在遇到任何故障时都必须致电Microsoft寻求支持,那么您将有一些丑陋的解释要做。

2.如何在多节点,多子网群集中配置DTC?

阅读Allan Hirt的有关在群集中使用多个SQL Server实例配置DTC的文章,并确保也阅读该文章中的所有链接。


Allan Hirt的帖子中的详细信息。您的警告使我确信我不走运,不能这样做
Elijah W. Gagne
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.