Konfigurieren der Replikation mit Always On-Verfügbarkeitsgruppen
Gilt für:SQL Server – nur Windows
Die Konfiguration der SQL Server -Replikation und von Always On-Verfügbarkeitsgruppen umfasst sieben Schritte. Jeder dieser Schritte wird in den folgenden Abschnitten detailliert beschrieben.
1. Konfigurieren der Datenbankpublikationen und Abonnements
Konfigurieren des Distributors
Die Verteilungsdatenbank kann nicht in einer Verfügbarkeitsgruppe mit SQL Server 2012 und SQL Server 2014 platziert werden. Die Platzierung der Verteilungsdatenbank in einer Verfügbarkeitsgruppe wird mit SQL 2016 und höher unterstützt, mit Ausnahme von Verteilungsdatenbanken, die in Mergetopologien, bidirektionalen Topologien oder Peer-zu-Peer-Replikationstopologien verwendet werden. Weitere Informationen finden Sie unter Einrichten der Verteilungsdatenbank für die Replikation in einer Always On-Verfügbarkeitsgruppe.
Konfigurieren Sie Verteilung beim Verteiler. Wenn gespeicherte Prozeduren für die Konfiguration verwendet werden, führen Sie
sp_adddistributor
aus. Verwenden Sie den Parameter @password, um das Kennwort zu identifizieren, das verwendet wird, wenn ein Remoteherausgeber eine Verbindung mit dem Verteiler herstellt. Das Kennwort wird auch bei jedem Remoteverleger benötigt, wenn der Remoteverteiler eingerichtet wird.USE master; GO EXECUTE sys.sp_adddistributor @distributor = 'MyDistributor', @password = '**Strong password for distributor**';
Erstellen Sie die Verteilungsdatenbank beim Verteiler. Werden für die Konfiguration gespeicherte Prozeduren verwendet, führen Sie
sp_adddistributiondb
aus.USE master; GO EXECUTE sys.sp_adddistributiondb @database = 'distribution', @security_mode = 1;
Konfigurieren Sie den Remoteverleger. Wenn gespeicherte Prozeduren zum Konfigurieren des Verteilers verwendet werden, führen Sie
sp_adddistpublisher
aus. Der Parameter @security_mode wird verwendet, um zu bestimmen, wie die von den Replikations-Agents ausgeführte gespeicherte Verlegerüberprüfungsprozedur eine Verbindung mit der aktuellen primären Instanz herstellt. Wenn der Parameter auf 1 festgelegt ist, wird die Windows-Authentifizierung verwendet, um eine Verbindung mit dem aktuellen primären Replikat herzustellen. Bei Festlegung auf 0 wird die SQL Server-Authentifizierung mit den angegebenen @login- und @password-Werten verwendet. Die Anmeldedaten und das Kennwort, die angegeben wurden, müssen bei jedem sekundären Replikat gültig sein, damit die gespeicherte Prozedur zur Überprüfung erfolgreich eine Verbindung mit diesem Replikat herstellen kann.Hinweis
Wenn geänderte Replikations-Agents auf einem anderen Computer als dem Verteiler ausgeführt werden, dann ist bei Verwendung der Windows-Authentifizierung zum Herstellen einer Verbindung zum primären Replikat erforderlich, dass die Kerberos-Authentifizierung für die Kommunikation zwischen den Replikathostcomputern konfiguriert wird. Bei Verwendung einer SQL Server-Anmeldung zum Herstellen einer Verbindung mit dem aktuellen primären Replikat ist keine Kerberos-Authentifizierung erforderlich.
USE master; GO EXECUTE sys.sp_adddistpublisher @publisher = 'AGPrimaryReplicaHost', @distribution_db = 'distribution', @working_directory = '\\MyReplShare\WorkingDir', @login = 'MyPubLogin', @password = '**Strong password for publisher**';
Weitere Informationen finden Sie unter sp_adddistpublisher.
Konfigurieren des Verlegers beim ursprünglichen Verleger
Konfigurieren Sie die Remoteverteilung. Wenn gespeicherte Prozeduren zur Konfiguration des Verlegers verwendet werden, führen Sie
sp_adddistributor
aus. Geben Sie dabei denselben Wert für @password an, der beim Ausführen vonsp_adddistrbutor
beim Verteiler zum Einrichten der Verteilung verwendet wurde.EXECUTE sys.sp_adddistributor @distributor = 'MyDistributor', @password = 'MyDistPass';
Aktivieren Sie die Datenbank für die Replikation. Wenn gespeicherte Prozeduren zum Konfigurieren des Verlegers verwendet werden, führen Sie
sp_replicationdboption
aus. Wenn sowohl die Transaktions- als auch die Mergereplikation für die Datenbank konfiguriert werden soll, müssen beide Elemente aktiviert sein.USE master; GO EXECUTE sys.sp_replicationdboption @dbname = 'MyDBName', @optname = 'publish', @value = 'true'; EXECUTE sys.sp_replicationdboption @dbname = 'MyDBName', @optname = 'merge publish', @value = 'true';
Erstellen Sie die Replikationsveröffentlichung, Artikel und Abonnements. Weitere Informationen zum Konfigurieren der Replikation finden Sie unter "Veröffentlichen von Daten und Datenbankobjekten".
2. Konfigurieren der Verfügbarkeitsgruppe
Erstellen Sie beim vorgesehenen primären Replikat die Veröffentlichungsgruppe, und ordnen Sie ihr die veröffentlichte (oder zu veröffentlichende) Datenbank als Elementdatenbank zu. Wenn Sie den Verfügbarkeitsgruppen-Assistenten verwenden, können Sie es entweder dem Assistenten erlauben, die sekundären Replikatdatenbanken zum ersten Mal zu synchronisieren, oder Sie können die Initialisierung mit Sicherung und Wiederherstellung manuell ausführen.
Erstellen Sie einen DNS-Listener für die Verfügbarkeitsgruppe, die von den Replikations-Agents verwendet wird, um eine Verbindung mit dem aktuellen Primären herzustellen. Der angegebene Listenername wird als Umleitungsziel für das aus ursprünglichem Verleger und veröffentlichter Datenbank bestehende Paar verwendet. Wenn Sie beispielsweise DDL zum Konfigurieren der Verfügbarkeitsgruppe verwenden, kann das folgende Codebeispiel verwendet werden, um einen Verfügbarkeitsgruppenlistener für eine vorhandene Verfügbarkeitsgruppe namens MyAG
anzugeben:
ALTER AVAILABILITY GROUP 'MyAG'
ADD LISTENER 'MyAGListenerName' (WITH IP (('10.120.19.155', '255.255.254.0')));
Weitere Informationen finden Sie unter Erstellung und Konfiguration von Verfügbarkeitsgruppen (SQL Server).
3. Stellen Sie sicher, dass alle sekundären Replikathosts für die Replikation konfiguriert sind.
Überprüfen Sie bei jedem sekundären Replikathost, ob SQL Server so konfiguriert wurde, dass die Replikation unterstützt wird. Die folgende Abfrage kann auf jedem sekundären Replikathost ausgeführt werden, um zu bestimmen, ob die Replikation installiert wurde:
USE master;
GO
DECLARE @installed AS INT;
EXECUTE @installed = sys.sp_MS_replication_installed;
SELECT @installed;
Wenn @installed gleich 0 ist, muss der SQL Server-Installation eine Replikation hinzugefügt werden.
4. Konfigurieren des sekundären Replikathosts als Replikationsverleger
Ein sekundäres Replikat kann nicht als Replikationsverleger oder Neuverleger fungieren, aber die Replikation muss so konfiguriert werden, dass das sekundäre Replikat nach einem Failover die Rolle übernehmen kann. Konfigurieren Sie beim Verteiler die Verteilung für jeden sekundären Replikathost. Geben Sie die Verteilungsdatenbank und das Arbeitsverzeichnis an, die angegeben wurden, als der ursprüngliche Verleger dem Verteiler hinzugefügt wurde. Wenn Sie gespeicherte Prozeduren zum Konfigurieren der Verteilung verwenden, verwenden Sie sp_adddistpublisher
, um die Remote-Herausgeber dem Händler zuzuordnen. Wenn @login und @password für den ursprünglichen Verleger verwendet wurden, geben Sie die gleichen Werte für die einzelnen sekundären Replikathosts an, die Sie als Verleger hinzufügen.
EXECUTE sys.sp_adddistpublisher
@publisher = 'AGSecondaryReplicaHost',
@distribution_db = 'distribution',
@working_directory = '\\MyReplShare\WorkingDir',
@login = 'MyPubLogin',
@password = '**Strong password for publisher**';
Konfigurieren Sie die Verteilung auf jedem sekundären Replikathost. Identifizieren Sie den Verteiler des ursprünglichen Verlegers als Remoteverteiler. Verwenden Sie dasselbe Kennwort wie das, das bei der ursprünglichen Ausführung von sp_adddistributor
beim Distributor verwendet wurde. Wenn gespeicherte Prozeduren zum Konfigurieren der Verteilung verwendet werden, wird der @password Parameter von sp_adddistributor
verwendet, um das Kennwort anzugeben.
EXECUTE sp_adddistributor
@distributor = 'MyDistributor',
@password = '**Strong password for distributor**';
Stellen Sie bei jedem sekundären Replikathost sicher, dass die Pushabonnenten der Datenbankveröffentlichungen als Verbindungsserver angezeigt werden. Wenn gespeicherte Prozeduren zum Konfigurieren der Remoteverleger verwendet werden, führen Sie sp_addlinkedserver
aus, um den Verlegern die Abonnenten (sofern nicht bereits vorhanden) als Verbindungsserver hinzuzufügen.
EXECUTE sys.sp_addlinkedserver @server = 'MySubscriber';
5. Umleiten des ursprünglichen Verlegers zum Namen des Verfügbarkeitsgruppenlisteners
Führen Sie auf dem Verteiler in der Verteilungsdatenbank die gespeicherte Prozedur sp_redirect_publisher
aus, um den ursprünglichen Verleger und die veröffentlichte Datenbank dem Namen des Verfügbarkeitsgruppenlisteners der Verfügbarkeitsgruppe zuzuordnen.
USE distribution;
GO
EXECUTE sys.sp_redirect_publisher
@original_publisher = 'MyPublisher',
@publisher_db = 'MyPublishedDB',
@redirected_publisher = 'MyAGListenerName';
6. Führen Sie die gespeicherte Prozedur der Replikationsprüfung aus, um die Konfiguration zu überprüfen.
Führen Sie auf dem Verteiler in der Verteilungsdatenbank die gespeicherte Prozedur sp_validate_replica_hosts_as_publishers
aus, um zu überprüfen, ob alle Replikathosts bereits so konfiguriert wurden, dass sie als Verleger für die veröffentlichte Datenbank fungieren.
USE distribution;
GO
DECLARE @redirected_publisher AS sysname;
EXECUTE sys.sp_validate_replica_hosts_as_publishers
@original_publisher = 'MyPublisher',
@publisher_db = 'MyPublishedDB',
@redirected_publisher = @redirected_publisher OUTPUT;
Die gespeicherte Prozedur sp_validate_replica_hosts_as_publishers
sollte über einen Anmeldenamen mit ausreichender Autorisierung für jeden Verfügbarkeitsgruppenreplikathost ausgeführt werden, um Informationen zur Verfügbarkeitsgruppe abzufragen. Im Gegensatz zu sp_validate_redirected_publisher
verwendet diese gespeicherte Prozedur die Anmeldeinformationen der Aufrufenden und nicht den Anmeldenamen, der in msdb.dbo.MSdistpublishers
gespeichert wird, um eine Verbindung mit den Verfügbarkeitsgruppenreplikaten herzustellen.
Fehler beim Überprüfen der sekundären Replikathosts
Bei der Überprüfung sekundärer Replikathosts, die keinen Lesezugriff zulassen oder die Angabe einer Leseabsicht erfordern, schlägt sp_validate_replica_hosts_as_publishers
mit dem folgenden Fehler fehl.
Meldung 21899, Ebene 11, Status 1, Prozedur
sp_hadr_verify_subscribers_at_publisher
, Zeile 109Die Abfrage beim umgeleiteten Verleger „MyReplicaHostName“ zur Bestimmung, ob sysserver-Einträge für die Abonnenten des ursprünglichen Verlegers „MyOriginalPublisher“ vorliegen, ist mit Fehler 976 und folgender Meldung fehlgeschlagen: „Fehler 976, Stufe 14, Status 1, Meldung: The target database, 'MyPublishedDB', is participating in an availability group and is currently not accessible for queries. (Die Zieldatenbank „MyPublishedDB“ ist an einer Verfügbarkeitsgruppe beteiligt, und Abfragen können derzeit nicht darauf zugreifen.) Entweder wird die Datenverschiebung unterbrochen, oder das Verfügbarkeitsreplikat ist nicht für den Lesezugriff aktiviert. Um schreibgeschützten Zugriff auf diese und andere Datenbanken in der Verfügbarkeitsgruppe zuzulassen, aktivieren Sie den Lesezugriff auf mindestens ein sekundäres Verfügbarkeitsreplikat in der Gruppe. Weitere Informationen finden Sie in der ALTER AVAILABILITY GROUP-Anweisung in der SQL Server-Onlinedokumentation.
Es sind ein oder mehrere Verlegerüberprüfungsfehler für Replikathost 'MyReplicaHostName' aufgetreten.
Dieses Verhalten wird erwartet. Sie müssen das Vorhandensein der Abonnentenservereinträge bei diesen sekundären Replikathosts überprüfen, indem Sie die sysserver-Einträge im Host direkt abfragen.
7. Hinzufügen des ursprünglichen Herausgebers zur Replikationsüberwachung
Fügen Sie dem Replikationsmonitor bei jedem Verfügbarkeitsgruppenreplikat den ursprünglichen Verleger hinzu.
Zugehörige Aufgaben
Replikation
Erstellen und Konfigurieren einer Verfügbarkeitsgruppe
- Verwenden des Assistenten zum Hinzufügen von Datenbanken zu Verfügbarkeitsgruppen (SQL Server)
- Verwenden des Dialogfelds Neue Verfügbarkeitsgruppe (SQL Server Management Studio)
- Erstellen einer Verfügbarkeitsgruppe (Transact-SQL)
- Erstellen einer Verfügbarkeitsgruppe (SQL Server PowerShell)
- Angeben der Endpunkt-URL beim Hinzufügen oder Ändern eines Verfügbarkeitsreplikats (SQL Server)
- Erstellen eines Datenbankspiegelungs-Endpunkts für AlwaysOn-Verfügbarkeitsgruppen (SQL Server PowerShell)
- Verknüpfen eines sekundären Replikats mit einer Verfügbarkeitsgruppe (SQL Server)
- Manuelles Vorbereiten einer sekundären Datenbank auf eine Verfügbarkeitsgruppe (SQL Server)
- Verknüpfen einer sekundären Datenbank mit einer Verfügbarkeitsgruppe (SQL Server)
- Erstellen oder Konfigurieren eines Verfügbarkeitsgruppenlisteners (SQL Server)