Problem: Wie kann ich Distributed Transaction Coordinator (DTC) auf allen Servern in einer AlwaysOn Availability Group (AG) ausführen? Ich muss keine Transaktionen über Failover- / Switchover-Ereignisse verwalten.
Setup: Ich habe einen Windows-Failovercluster (WSFC) mit drei Windows 2008 R2-Servern, auf denen SQL 2012 ausgeführt wird. Zwei Server befinden sich in einem Rechenzentrum und sind Teil eines AlwaysOn-Failoverclusters (FCI), während sich der dritte Server in befindet ein zweites Rechenzentrum. Die WSFC ist ein Cluster mit mehreren Subnetzen. Hier ist eine Skizze des Aufbaus:
Ich konnte DTC so installieren und konfigurieren, dass es zwischen den beiden FCI-Knoten funktioniert, da sie sich im selben Subnetz befinden und Speicher gemeinsam nutzen. Ich habe ein paar AGs konfiguriert und sie haben einwandfrei funktioniert. Dieser Screenshot zeigt den auf der FCI installierten DTC:
Dieser Screenshot zeigt, dass ich DTC auf einem der FCI-Knoten konfigurieren kann (je nachdem, welcher aktiv ist):
Ich möchte eine Anwendung, die DTC verwendet, auf diesen Cluster migrieren und eine AG verwenden. Ich habe gelesen, dass DTC mit AGs ( Referenz ) nicht unterstützt wird . Ich habe keine Möglichkeit gefunden, DTC auf dem dritten Knoten im zweiten Rechenzentrum zu konfigurieren. Wenn ich versuche, DTC auf dem dritten Knoten zu konfigurieren, scheint es nicht verfügbar zu sein, wie in diesem Screenshot gezeigt:
In Brent Ozars PDF mit der kostenlosen Setup-Checkliste für Verfügbarkeitsgruppen listet er Folgendes auf:
Cluster-Installation ...
29. Wenn eine FCI beteiligt ist, konfigurieren Sie den DTC gemäß Ihren Planungsabschnittsentscheidungen.
In den Kommentaren zu SQL Server 2012 AlwaysOn-Verfügbarkeitsgruppen sagt Rock Brent: "... ändert sich nichts, wenn AGs im Spiel sind. Denken Sie jedoch daran, dass Datenbanken in einer Verfügbarkeitsgruppe keine Transaktionskonsistenz unterstützen, wenn ein Failover auf ein anderes Replikat durchgeführt wird. .. "
Dies scheint, dass DTC in Verfügbarkeitsgruppen verwendet werden kann, solange Sie verstehen, dass Transaktionen bei einer AG-Umschaltung nicht beibehalten werden. Ich würde es nicht benötigen, um Transaktionen von den FCI-Knoten zu verwalten. Ich benötige nur DTC, damit die Anwendung im Katastrophenfall (bei dem ich mein primäres Rechenzentrum verloren habe) darauf zugreifen kann.
Wie konfiguriere ich DTC auf meinem dritten Knoten? Oder habe ich einfach Pech, wenn es darum geht, AGs und eine Anwendung zu verwenden, die DTC benötigt?
UPDATE: Die Lösung, für die ich mich entschieden habe, ist die Verwendung von Log Shipping. Im Falle eines Failovers benötige ich jedoch weiterhin DTC, um auf Node3 verfügbar zu sein. Ich habe festgestellt, dass es verfügbar wird, indem die gruppierte MSDTC-MSSQLSERVERCLU-Instanz von DTC deinstalliert wird, die von Knoten1 und Knoten2 gemeinsam genutzt wird. Nach dem Entfernen kann ich eine LocalDTC-Instanz auf Node3 einrichten und konfigurieren. Danach kann ich die gruppierte MSDTC-MSSQLSERVERCLU-Instanz erneut installieren. Die Installationsreihenfolge in dieser Reihenfolge scheint zu funktionieren. Ich bin jetzt schon eine Weile so gelaufen und habe keine negativen Auswirkungen festgestellt. Anscheinend funktioniert dies auch für die Ausführung einer AlwaysOn-Verfügbarkeitsgruppe. Ich verstehe, dass verteilte Transaktionen in einem AG-Failover nicht erhalten bleiben würden. Ich brauche nur neue, um nach dem Failover zu funktionieren. Aber ich habe
quelle