SQL Replikation mit Publisher Datenbanken in Always-On Gruppen

In diesem Artikel schauen wir uns die Einrichtung einer SQL Server Replikation mit einer Publisher Datenbank in Always-On Availability Gruppen näher an. Im Falle eines Failovers stellen wir damit die kontinuierliche Synchronisation auf einem sekundären Server sicher.

Bevor wir starten, kümmern wir uns zunächst um die Einrichtung der SQL Server Replikation mit der Publisher Datenbank in den Always-On Availability Gruppen.

Wir gehen folgendermaßen vor:
  1. Konfiguration einer Remote-Distribution
  2. Konfiguration von “Publisher” für die Verwendung der Remoteverteilung
  3. Publisher Datenbank zur Always On Gruppe hinzufügen
  4. Konfiguration der SQL Server Replikation
  5. Verbindungsserver für Abonnenten auf den sekundären Server erstellen
  6. Weiterleiten des ursprünglichen Publishers an Listener der Always On Gruppe

Zur Veranschaulichung haben wir unsere SQL Server folgendermaßen benannt:

SQL01V – Primärserver
SQL02V – Sekundärserver
SQL03V – Remoteverteilungsserver
SQL04V – Abonnent

01. Konfiguration einer Remote-Distribution

Zum Start richten wir die Verteilungsdatenbank auf einem Remote-Server ein. Dieser Remote-Verteilungsserver sollte für beide Knoten der Always-On Availability Group verfügbar sein. Wir verwenden dafür den Server Verteilungsserver SQL03V.


Wir melden uns mit dem Server SQL03V im SQL Server Management Studio an und navigieren zum Replikationsordner. Mit einem Rechtsklick wählen wir Verteilung konfigurieren aus und starten den Konfigurationsassistenten. Anschließend legen wir fest, dass unser Server SQL03V als eigener Distributor fungieren soll. Daraufhin wird SQL Server eine Verteilungsdatenbank erstellen und diese protokollieren.

Startet der SQL Server Agent nicht automatisch, öffnet sich eine Fehlermeldung. Sie werden nun aufgefordert, das Startverhalten des SQL Server Agenten zu konfigurieren. Dabei können Sie wählen aus dem automatischen Start oder dem manuellen Start. Wir empfehlen Ihnen die Konfiguration für einen automatischen Start festzulegen. Dies hat den Hintergrund, dass im Replikationssetup Vorgänge erstellt werden, die der SQL Server Agent vornehmen soll. Die konfigurierten Synchronisationssintervalle sind unterschiedlich und können gemäß eines Zeitplans oder kontinuierlich durchgeführt werden. Ist das Setup des SQL Server Agenten auf manuell starten ausgerichtet, kann dieser die Daten nicht mehr synchronisieren und der Vorgang wird beendet.

Im folgenden Fenster werden Sie nun aufgefordert den Speicherpfad des Snapshot-Ordners einzugeben, in den der Agent die erstellten Snapshots speichert. Wichtig: Verwenden Sie unbedingt einen Pfad, auf den auch der Abonnenten-Server (SQL04V) zugreifen kann.

Wir legen im kommenden Schritt nun einen benutzerdefinierten Namen für unsere Verteilungsdatenbank fest. Auch hier geben wir gewünschten Speicherort für Daten- & log-Dateien der Verteilungsdatenbank ein. Nachfolgend bestätigen wir unsere Eingaben und beenden damit den Konfigurationsprozess der Verteilungsdatenbank.

Im nächsten Schritt kümmern wir uns um die Einrichtung der Eigenschaften unserer Verteilungsdatenbank. Dafür klicken wir mit einem Rechtsklick auf den Replikationsordner und wählen die Distributor Properties. Um sicher zu gehen, dass die Verteilung auf beide Knoten (SQL01V und SQL02V) durchgeführt wird, legen wir dafür ein Passwort unserer Wahl fest. Mit einem Klick auf HinzufügenSQL Server Publisher hinzufügen, geben wir die Servernamen und Anmeldeinformationen ein. In diesem Vorgang hinterlegen wir den Primärserver SQL01V als Publisher. Genauso gehen wir mit unserem Sekundärserver SQL02V vor. Mit dieser Konfiguration legen wir fest, dass sowohl der Primär- als auch der Sekundärserver als Failover-Knoten fungieren sollen. Sollten mehr als zwei Knoten in der Always-On Availability Group vorhanden sein, fügen Sie diese wie eben beschrieben ebenfalls hinzu.

02. Konfiguration von “Publisher” für die Verwendung der Remoteverteilung

Um sicher zu gehen, dass sich die SQL Replikation auf allen Knoten in der Always-On Availability Group befindet, testen wir dies mit folgendem T-SQL Skript auf allen vorhandenen Knoten:

USE master;  
GO  
DECLARE @installed int;  
EXEC @installed = sys.sp_MS_replication_installed;  
SELECT @installed;

(Als Ergebnis sollte die Abfrage 1 zurückgeben)

Im nächsten Schritt konfigurieren wir den Primär- & Sekundärserver als Publisher auf dem eingerichteten Remote-Verteilungsserver SQL03V.

Dafür melden wir uns im SSMS auf dem Primärserver SQL01V an und navigieren zum Replikationsordner. Mit einem Rechtsklick öffnen wir die Konfiguration der Verteilung und wählen die Option Verwenden Sie folgenden Server als Verteiler. Über Hinzufügen wählen Sie den Remote-Verteilungsserver SQL03V aus. Mit Eingabe des Administratorenpassworts und einem Klick auf Weiter und Verteilung konfigurieren schließen Sie den Konfigurationsprozess ab.

Dasselbe Procedere führen Sie nun für den Sekundärserver SQL02V (und alle weiteren Failover Knoten) durch, sodass er ebenfalls denselben Remote-Verteilungsserver verwenden kann.

03. Hinzufügen der Publisher Datenbank zur Always-On Availability Gruppe

Nachdem wir im vorherigen Schritt den Publisher für die Verwendung des Remoteverteilungsservers eingerichtet haben, müssen wir die Datenbank nun zur Always On Gruppe hinzufügen.
Über den SQL Server Konfigurationsmanager wählen wir den Remoteverteilungsserver SQL03V aus und öffnen mit einem Rechtsklick die Eigenschaften. Danach setzen wir im Reiter Always On Availability den Haken zur Aktivierung.

Anschließend sollte der Bereich Always On High Availability zu sehen sein. Mit einem Rechtsklick auf Availability Groups erstellen wir eine neue Hochverfügbarkeitsgruppe. Hier pflegen wir nun alle Knoten und Datenbanken ein, die wir in unserer Gruppe haben möchten. So auch unsere Publisher Datenbank.

04. Konfiguration der SQL Server Replikation

Wir melden uns über SSMS auf unserem Primärserver SQL01V an, wählen den Replikationsordner und anschließend Distributor Properties aus. Wir erstellen nun eine neue Publikation und wählen als Replikationstyp SQL Server 2008 or later. Im Anschluss daran wählen wir die Tabellen aus, die wir replizieren möchten.

Im Nachgang setzen wir den Haken bei Snapshot sofort erstellen.

Um die Agentensicherheit zu konfigurieren, klicken wir zunächst auf Weiter und aktivieren Publikation erstellen. Danach geben wir den Namen unserer Publikation ein, auf die das SQL Server Replikat verwendet werden soll. Mit einem Klick auf Fertig stellen wird die Publikation erstellt und der Snapshot-Agent aktiviert.

Da allerdings auch alle Abonnenten dieselben Snapshots verwenden sollen, müssen wir in der bereits angelegten Publikation ebendiese Abonnenten hinzufügen. Dafür klicken wir mit einem Rechtsklick auf die Publikation und wählen Neue Abonnements aus. Wir geben den Agentenspeicherort an und im Nachgang den Namen des Abonnenten (SQL04V) ein. Anschließend konfigurieren wir die Agentensicherheit und planen das Iterationsintervall für die Ausführung unserer SQL Server Replikation. Initialisieren Sie das Abonnement sofort, damit der Snapshot direkt angewendet werden kann.

05. Verbindungsserver für Abonnenten auf den sekundären Server erstellen

Haben wir die Replikation konfiguriert, müssen wir nun einen Verbindungsserver (SQL03V) für unseren Abonnent (SQL04V) auf unserem Sekundärserver (SQL02V) einrichten. Dieser Vorgang muss mit allen vorhandenen Abonnenten und Failover-Knoten durchgeführt werden.

Nutzen Sie dafür folgendes Beispielskript:

EXEC sp_addlinkedserver   
    @server = 'SQL03V';

06. Weiterleiten des ursprünglichen Publishers an Listener der Always On Gruppe

Zum Abschluss kümmern wir uns um die Weiterleitung des ursprünglichen Publishers an den Listener der Always On Gruppe. Dafür melden wir uns über SSMS bei unserem Remote-Verteilungsserver (SQL03V) an und führen folgendes Skript in der Verteilerdatenbank aus:

USE distribution;  
GO  
EXEC sp_redirect_publisher   
@original_publisher = 'SQL01V',  
@publisher_db = 'pub_AOAG',  
@redirected_publisher = 'MyAGListenerName';

Um sicher zu gehen, prüfen wir unsere Umleitung mit folgendem Skript:

USE distribution;  
GO  
DECLARE @redirected_publisher sysname;  
EXEC sys.sp_validate_replica_hosts_as_publishers  
    @original_publisher = 'SQL01V',  
    @publisher_db = 'pub_AOAG',  
    @redirected_publisher = @redirected_publisher output;

Zu guter Letzt führen wir ein manuelles Failover vom Primärserver auf den Sekundärserver durch und testen damit die Synchronisation des Replikationsagenten.

Mit dieser Anleitung sollten Sie nun in der Lage sein, eine SQL Server Replikation mit einer Publisher Datenbank in einer Always-On Availability Group durchführen zu können.