Blog
Thursday, 22. April 2021

SQL Replikation mit Publisher Datenbanken in Always-On Gruppen

Anna
Teamleitung Website & Content

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
  1. 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.

Mainzer Datenfabrik - SQL Replikation mit Publisher Datenbanken in Always-On Gruppen

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.

Mainzer Datenfabrik - SQL Replikation mit Publisher Datenbanken in Always-On Gruppen

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.

Mainzer Datenfabrik - SQL Replikation mit Publisher Datenbanken in Always-On Gruppen

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.

Mainzer Datenfabrik - SQL Replikation mit Publisher Datenbanken in Always-On Gruppen

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ügen → SQL 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.

Mainzer Datenfabrik - SQL Replikation mit Publisher Datenbanken in Always-On Gruppen
  1. 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.

  1. 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.

  1. 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.
Mainzer Datenfabrik - SQL Replikation mit Publisher Datenbanken in Always-On Gruppen

Im Nachgang setzen wir den Haken bei Snapshot sofort erstellen.

Mainzer Datenfabrik - SQL Replikation mit Publisher Datenbanken in Always-On Gruppen

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.

  1. 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';
  1. 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.

Interesse geweckt?

Unsere Expert:innen stehen Ihnen bei allen Fragen rund um Ihre IT Infrastruktur zur Seite.

Kontaktieren Sie uns gerne über das Kontaktformular und vereinbaren ein unverbindliches Beratungsgespräch mit unseren Berater:innen zur Bedarfsevaluierung. Gemeinsam optimieren wir Ihre Umgebung und steigern Ihre Performance!
Wir freuen uns auf Ihre Kontaktaufnahme!

Taunusstraße 72
55118 Mainz
info@madafa.de
+49 6131 3331612
Bürozeiten
Montag bis Donnerstag:
9:00 - 17:00 Uhr MEZ

Freitags:
9:30 - 14:00 Uhr MEZ