SQL Server ist eine Datenbank mit zahlreichen Funktionen für Replikation, Spiegelung und Failover-Clustering. Sie alle sind Strategien und Konfigurationen, Daten zu kopieren, um die Zugänglichkeit und Verfügbarkeit an verschiedenen geografischen Orten zu verbessern, und im Falle eines Absturzes die Daten für die Kunden verfügbar zu machen.

In dieser Anleitung liegt der Fokus auf den Datenbankreplikationsprozeduren. Diese Konfigurationen ermöglichen Benutzern, alle Daten auf mehreren SQL Servern automatisch und in Echtzeit zu kopieren.

Der SQL Server liefert 4 Arten von Replikationsprozeduren:

  • Transactional
  • Merge
  • Snapshot
  • Peer to Peer

Peer-to-Peer-Replikation ist eine Lösung, welche auf horizontale Skalierbarkeit bei hoher Verfügbarkeit ausgerichtet ist, da sie die Verwaltung vieler Kopien von Daten in mehreren Instanzen des Servers, den so genannten “Knoten”, erlaubt. Basierend auf der Transaktionsreplikation überträgt die Peer-to-Peer-Replikation Datenänderungen an alle Knoten fast in Echtzeit. Dank dieser Redundanz können Anwendungen, welche die horizontale Skalierbarkeit von Leseoperationen erfordern, die Leseprozesse der Clients auf mehrere Knoten aufteilen und auf ihre Daten viel schneller zugreifen. Diese Art der Replikation ist eine der leistungsfähigsten und ausfallsichersten Replikationsverfahren, da die Funktion und Verfügbarkeit des gesamten Systems nicht beeinträchtigt wird, falls ein oder mehrere Knoten ausfallen.

Jedoch, ist Peer-to-Peer-Replikation nur auf der SQL Server Enterprise Version verfügbar und hat im Vergleich zu anderen Versionen durchaus hohe Lizenzkosten. Eine gute Alternative für kleine und mittlere Unternehmen ist die stabile und flexibel zu konfigurierende Merge-Replikation.

Starten wir mit der Anwendung, beginnend mit dem, was wir für die Konfiguration einer Merge-Replikation benötigen und wie wir sie dann in wenigen einfachen Schritten einrichten können.

Beispielsweise sind 3 SQL Server 2014 an verschiedenen Orten und laufen je an einem anderen (Siehe Bild unten):

sql-server-merge-replication-ftp

Es braucht einen primären Hauptserver namens Publisher und sekundäre Server namens Subscribers. Subscribers synchronisieren ihre eigenen Daten mit dem Publisher (Senden und Empfangen), dadurch werden auch die Daten jedes Subscribers mit den anderen synchronisiert. Daher müssen Sie zuerst entscheiden, welcher der drei Server als Publisher fungieren soll, und dann mit der Konfiguration fortfahren, welche nun erklärt wird.

Anfangs sollte sichergestellt werden, dass der SQL Server Agent Service gestartet ist und sich im automatischen Modus befindet.

Schritt 1: Erstellung einer Publikation auf dem Publisher-server

sql-server-merge-replication-001

Wir starten mit der Konfigurierung aller verschiedenen Optionen innerhalb des «New Publication Wizard» Fenster.

sql-server-merge-replication-002

Wählen sie die Datenbank, aus welche sie snychronisieren möchten:

sql-server-merge-replication-003

Wählen Sie die Art der Replikation, die sie einrichten wollen, die “Merge publication“:

sql-server-merge-replication-004

Belassen Sie die Standardkompatibilitätsoptionen und wählen sie «Next» um fortzufahren

sql-server-merge-replication-005

Bestimmen Sie, welche Datenbanktabelle synchronisiert werden soll, indem sie die bestimmten Tabellen auswählen.

sql-server-merge-replication-006

Der Assistent warnt, dass den ausgewählten Tabellen ein neues ID-Feld hinzugefügt wird, um die Datensätze eindeutig zu identifizieren.

sql-server-merge-replication-007

Falls sie keine Filter benötigen, wählen sie «Next»

sql-server-merge-replication-008

Lassen Sie beide Optionen wie standardmäßig eingestellt und wählen sie «Next»

sql-server-merge-replication-009

Nun wird die Konfiguration der Accounts ausgeführt, um den Replikationsdienst (Agent) auszuführen und eine Verbindung zum Verleger herzustellen.

Schreiben Sie in der oberen Hälfte den Server-Administrator-Benutzernamen und davor den Server- oder Domänennamen. Im Beispiel wäre nun der Severname «Publisher». In der unteren Hälfte dem SQL Server-Konto, welchem eine Verbindung mit maximalen Rechten zur Datenbank ermöglicht wird. Im Beispiel wäre der SQL-Standartbenutzer «sa.»

Hinweis: Am besten ist es, wenn Sie auf allen Datenbankservern den gleichen SQL Server-Benutzernamen und das gleiche Kennwort haben (sowohl für Publisher als auch für Abonnenten).

Alle Eingaben bestätigen und «Next» wählen (Siehe Bild).

sql-server-merge-replication-010

Die Option «Create the publication» ausgewählt lassen und «Next» wählen.

sql-server-merge-replication-011

Nun wird die Zusammenfassung aller Einstellungen angezeigt und Sie können die Publikation nun mit Auswahl von «Finish» erstellen:

sql-server-merge-replication-012

Ein neues Fenster wird geöffnet, in dem der Fortschritt des ersten Snapshots angezeigt wird. Beide Vorgänge müssen korrekt abgeschlossen werden.

 

Schritt 2: Konfigurierung des Zugriffs für die Subscribers auf die veröffentlichten Daten des Publisher-Server: FTP Server

Eine der grundlegendsten Replikationseinstellungen ist, wie die Abonnenten auf Daten zugreifen können, die vom Publisher-Server veröffentlicht werden. Der Publisher erstellt regelmäßig einen Snapshot seiner Daten in einem lokalen Ordner und aktualisiert ihn dann mit Datenänderungen. Daher müssen sie sicherstellen, dass die Subscribers vollständigen Zugriff auf diesen Snapshot haben, sodass sie ihre Daten mit dem Publisher synchronisieren können. Da wir in unserer Anleitung von nicht gekoppelten Servern sprechen (also nicht im selben LAN), werden die Daten per FTP zur Verfügung gestellt.

Sie müssen auf dem Publisher einen FTP-Server konfigurieren, der für die Subscribers den Ordner, in dem sich der Daten-Snapshot befindet, verfügbar macht. Wir können sowohl den FTP-Server von IIS (Windows default one), als auch den von Drittanbietern wie FileZilla Server verwenden. Für die FTP-Konfiguration in IIS beziehen Sie sich bitte auf das offizielle Microsoft-Handbuch https://technet.microsoft.com/it-it/library/hh831655(v=ws.11).aspx .

Zunächst müssen Sie bei der gerade erstellten Publikation eine Änderung vornehmen, um FTP als Zugriffsmethode auf die veröffentlichten Daten zu aktivieren:

sql-server-merge-replication-013

Richten Sie dann die Verbindungskonfiguration ein. (die Einstellungen müssen die Konfiguration des FTP-Servers widerspiegeln). Schreiben Sie den Namen des FTP-Servers (Name des Servers selbst), den Port (standardmäßig 21, aber aus Sicherheitsgründen kann auch ein anderer verwendet werden), den FTP-Benutzernamen und das Passwort (Wenn sie IIS verwenden wählen sie einen Windows-Benutzernamen und stellen sicher, dass es sich um einen Administrator handelt. Wenn sie einen anderen FTP-Server verwenden, verwenden wir den Benutzer, den sie konfiguriert haben.) Schließlich geben sie den relativen Pfad des Ordners an, der den Snapshot enthält, und betrachten ihn als Startpunkt vom Stamm des FTP-Servers. Bei der Einrichtung dieser Prozedur erstellt SQL Server (standardmäßig) einen Ordner namens “ftp” (mit dem darin enthaltenen Daten-Snapshot).
(Siehe nächstes Bild)

sql-server-merge-replication-014

Hinweis: Es ist notwendig, den FTP-Port über eine bestimmte Regel in der Windows-Firewall zu öffnen.

Hinweis 2: Ein Fehler in der Synchronisation (auf dem Subscriber) könnte bedeuten, dass diese FTP-Konfiguration nicht korrekt durchgeführt wurde. Der Subscriber kann beim Zugriff auf die Daten auf einen allgemeinen Fehler stoßen, der zu einer abnormalen Unterbrechung des Synchronisationsagenten /-jobs führt (Fehler wie “der Agent läuft nicht” oder Absturz bei Speicherabzügen). Überprüfen Sie die Konfiguration nochmals. Ein erster Test könnte sein, sich vom entfernten Server (einem Subscriber) mit einer anderen FTP-Client-Software wie FileZilla zu verbinden, um sicher zu sein, dass die Verbindung in Ordnung ist und auf die Ordner zugegriffen werden kann.

Hinweis 3: Der Ordner “C: \ Programme \ Microsoft SQL Server \ MSSQL12.MSSQLSERVER \ MSSQL \ repldata” und sein relativer Unterordner “/ ftp” sind möglicherweise aufgrund von Berechtigungsproblemen nicht zugänglich. Im Falle von Problemen, machen sie den Test, der die Berechtigungen dieses Ordners auf “Jeder” -> “Vollzugriff” setzt

Überprüfen Sie mit “View snapshot agent status”, dass die Snapshots korrekt erstellt wurden, und mit “Launch replication monitor” überprüfen sie, ob die Subscriber korrekt synchronisiert werden (bis wir keinen Subscriber einrichten, bleibt dieser leer).

sql-server-merge-replication-015

Wenn beim Publisher alles korrekt konfiguriert ist, können sie nun einen Subscriber erstellen und eine erste Datensynchronisation durchführen.

 

Schritt 3: Erstellung einer Subskription im Subscriber

Vorsicht: Versichern Sie sich, dass der SQL Server Agent Service auf dem zu installierenden Subscriber läuft.

Gehen sie auf den SQL Server, der sich als Abonnent mit dem Hauptserver verbindet und dann die Daten synchronisiert. Klicken Sie im Menü “Replikation” mit der rechten Maustaste auf “Lokale Abonnements” und anschließend auf “Neue Abonnements”.

Für die Publikation, wird ein Ausführungsassistent geöffnet:

sql-server-merge-replication-017

Verbinden sie sich nun mit dem Publisher Server, um die Publikation, welche sie gemacht haben zu sehen und auszuwählen. (Siehe Bild Unten)

sql-server-merge-replication-018

Bitte beachten Sie diese Konfigurationsschritte, um eine korrekte Verbindung zu gewährleisten. Wenn sie nach einem Publisher suchen, können Sie sich damit verbinden, indem Sie den Namen des Servers angeben, (ohne IP-Adresse (mit oder ohne einen bestimmten Port)). Dies bedeutet, dass Sie auf diesem System die IP-Adresse des Publisher-Servers anhand seines Namens irgendwie “zuordnen” müssen. Sie können dies tun, indem sie einen Alias mit den SQL Server-Diensten des Konfigurationsfensters erstellen.  (Siehe Bild)

sql-server-merge-replication-020

Fügen Sie einen Alias mit dem Namen des Remote-Servers des Publishers, seiner IP-Adresse und dem SQL Server-Port in den beiden Verzweigungen “Aliase” hinzu.

Dies ermöglicht die Verbindung zu entfernten SQL-Servern, mit Namen und nicht mit IP-Adressen. Es ist grundlegend, den SQL Server-Port (unten sehen sie den Standard) auf den Servern zu öffnen. Wenn Sie auf “SQL Server-Publisher suchen” klicken, werden sie aufgefordert, eine Verbindung zum SQL-Publisher-Server herzustellen. Anschließend wird im Standard Authentifizierungsfenster von SQL Server Folgendes angezeigt:

sql-server-merge-replication-021

Sobald sie sich authentifiziert haben, können Sie die Veröffentlichung sehen, welche Sie auf dem Publisher erstellt haben und können diese auswählen.

sql-server-merge-replication-022

Im nächsten Schritt können Sie die Standartoptionen beibehalten.

sql-server-merge-replication-023

Wählen Sie im folgenden Fenster die zu synchronisierende Datenbank aus. Sie können diese Datenbank auf dem Subscriber erstellen, indem Sie einfach eine Kopie der Hauptdatenbank wiederherstellen, welche auf dem Publisher sind.

Es gibt sowohl den Namen des Subscriber (im Beispiel “SUBSCRIBER”) als auch den Namen der Datenbank. (Siehe Bild unten)

Anschließend legen Sie die für die Authentifizierung erforderlichen Anmeldeinformationen fest. Sie werden das Windows-Administrator-Konto im ersten Panel und das SQL-Server-Konto im zweiten verwenden (wie zuvor beim Publisher).

sql-server-merge-replication-025

Nun können Sie definieren, wann eine Datensynchronisation ausgeführt werden soll. Sowohl Echtzeit wie die Angabe eines Synchronisierungsintervalles sind möglich. Falls Daten kontinuierlich synchronisiert werden müssen, können sie ein Intervall von 10 Sek auswählen. (Möglich sind auch Minuten / Stunden / Tag-Intervalle)

sql-server-merge-replication-026

Folgend legen Sie fest, dass die Subskription sofort initialisiert wird.

sql-server-merge-replication-027

Abschließend konfigurieren Sie den Subscriber so, dass er auch im Server-Modus läuft: Das bedeutet, dass der Subscriber nicht nur die Daten vom Herausgeber abruft, sondern auch seine eigenen Daten an ihn sendet, was eine bidirektionale Synchronisation impliziert. Behalten Sie die Standardoption für die Konfliktlösungspriorität bei.

sql-server-merge-replication-028

Wählen Sie “Finish” um die Subskription zu erstellen und die Synchronisation zu starten.

sql-server-merge-replication-029

Sie können überprüfen ob die Synchronisation läuft, indem sie das Synchronisationsstaus-Fenster öffnen. (Siehe Bild unten)

sql-server-merge-replication-030

 

Die Synchronisation läuft korrekt.

Wenn Sie den Anleitungen dieses Tutorials exakt folgen, konfigurieren Sie eine korrekte Datensynchronisation zwischen zwei oder mehreren SQL Servern ohne Probleme.

Selbstverständlich können für diesen Prozess kleinere Fehler auftreten, aber mit einigen kleinen Tricks und ein wenig Erfahrung können Sie eine stabile und effiziente Konfiguration realisieren.

Auf der Webseite von Microsoft finden Sie zahlreiche Dokumentationen zur Optimierung und Konfiguration einer Datenbankreplikation:

https://docs.microsoft.com/en-us/sql/relational-databases/replication/administration/enhance-general-replication-performance?view=sql-server-2017

https://docs.microsoft.com/en-us/sql/relational-databases/replication/administration/enhance-merge-replication-performance?view=sql-server-2017

 

 

(Englisch, Italienisch, Französisch, Spanisch)



SQL Server Merge Replication FTP: das ultimative handbuch zur remote-datenbanksynchronisierung
Iperius Backup Team
*****************************************

PLEASE NOTE: if you need technical support or have any sales or technical question, don't use comments. Instead open a TICKET here: https://support.iperius.net

*****************************************

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*****************************************

PLEASE NOTE: if you need technical support or have any sales or technical question, don't use comments. Instead open a TICKET here: https://support.iperius.net

*****************************************