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 Datenbankveröffentlichungen und Abonnements
Konfigurieren des Verteilers
Die Verteilungsdatenbank kann nicht in eine Verfügbarkeitsgruppe mit SQL Server 2012 und SQL Server 2014 eingefügt 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 Konfigurieren einer Verteilungsdatenbank in einer Verfügbarkeitsgruppe.
Konfigurieren Sie Verteilung beim Verteiler. Wenn gespeicherte Prozeduren zur Konfiguration verwendet werden, führen Sie sp_adddistributoraus. Verwenden Sie den @password -Parameter, um das Kennwort zu identifizieren, das verwendet wird, wenn ein Remoteverleger eine Verbindung mit dem Verteiler herstellt. Das Kennwort wird auch bei jedem Remoteverleger benötigt, wenn der Remoteverteiler eingerichtet wird.
USE master; GO EXEC sys.sp_adddistributor @distributor = 'MyDistributor', @password = '**Strong password for distributor**';
Erstellen Sie die Verteilungsdatenbank beim Verteiler. Wenn gespeicherte Prozeduren zur Konfiguration verwendet werden, führen Sie sp_adddistributiondbaus.
USE master; GO EXEC sys.sp_adddistributiondb @database = 'distribution', @security_mode = 1;
Konfigurieren Sie den Remoteverleger. Wenn gespeicherte Prozeduren zur Konfiguration des Verteilers verwendet werden, führen Sie sp_adddistpublisheraus. Mit dem Parameter @security_mode wird festgelegt, wie die gespeicherte Prozedur zur Verlegerüberprüfung, die von den Replikations-Agents ausgeführt wird, eine Verbindung mit dem aktuellen primären Replikat 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 EXEC 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 (Transact-SQL).
Konfigurieren des Verlegers beim ursprünglichen Verleger
Konfigurieren Sie die Remoteverteilung. Wenn gespeicherte Prozeduren zur Konfiguration des Verlegers verwendet werden, führen Sie sp_adddistributoraus. Geben Sie den Wert für @password an, der verwendet wurde, als sp_adddistrbutor beim Verteiler ausgeführt wurde, um die Verteilung einzurichten.
exec sys.sp_adddistributor @distributor = 'MyDistributor', @password = 'MyDistPass'
Aktivieren Sie die Datenbank für die Replikation. Wenn gespeicherte Prozeduren zur Konfiguration des Verlegers verwendet werden, führen Sie sp_replicationdboptionaus. Wenn sowohl Transaktions- als auch Mergereplikation für die Datenbank konfiguriert werden sollen, müssen beide aktiviert werden.
USE master; GO EXEC sys.sp_replicationdboption @dbname = 'MyDBName', @optname = 'publish', @value = 'true'; EXEC 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 Always On-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 die Verfügbarkeitsgruppe beispielsweise mithilfe von DDL konfigurieren, kann das folgende Codebeispiel zur Angabe eines Verfügbarkeitsgruppenlisteners für eine vorhandene Verfügbarkeitsgruppe mit dem Namen MyAG
verwendet werden:
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 wurden.
Ü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 int;
EXEC @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 kann 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, führen Sie sp_adddistpublisher aus, um die Remoteverleger dem Verteiler 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.
EXEC 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 das Kennwort, das bei der ursprünglichen Ausführung von sp_adddistributor auf dem Verteiler verwendet wurde. Wenn gespeicherte Prozeduren zum Konfigurieren der Verteilung verwendet werden, wird der Parameter @password von sp_adddistributor verwendet, um das Kennwort anzugeben.
EXEC 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.
EXEC 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 dem Namen des Verfügbarkeitsgruppenlisteners der Verfügbarkeitsgruppe die veröffentlichte Datenbank zuzuordnen.
USE distribution;
GO
EXEC sys.sp_redirect_publisher
@original_publisher = 'MyPublisher',
@publisher_db = 'MyPublishedDB',
@redirected_publisher = 'MyAGListenerName';
6. Ausführen der gespeicherten Prozedur zur Replikationsüberprüfung, 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 worden sind, um als Verleger für die veröffentlichte Datenbank zu fungieren.
USE distribution;
GO
DECLARE @redirected_publisher sysname;
EXEC 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 von einer Anmeldung mit ausreichender Autorisierung bei jedem Host des Verfügbarkeitsgruppenreplikats ausgeführt werden, um Informationen zur Verfügbarkeitsgruppe abzufragen. Im Gegensatz zu sp_validate_redirected_publisherverwendet diese gespeicherte Prozedur die Anmeldeinformationen des Aufrufers und nicht die in „msdb.dbo.MSdistpublishers“ gespeicherte Anmeldung , um eine Verbindung mit den Verfügbarkeitsgruppenreplikaten herzustellen.
Hinweis
sp_validate_replica_hosts_as_publishers schlägt bei der Überprüfung sekundärer Replikathosts, die keinen Lesezugriff zulassen oder die Angabe der Leseabsicht erfordern, mit dem folgenden Fehler fehl.
Meldung 21899, Ebene 11, Status 1, Prozedur sp_hadr_verify_subscribers_at_publisher, Zeile 109
Die 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 die Datenverschiebung wurde angehalten, oder für das Verfügbarkeitsreplikat wurde kein Schreibzugriff 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 Verlegers zum Replikationsmonitor
Fügen Sie dem Replikationsmonitor bei jedem Verfügbarkeitsgruppenreplikat den ursprünglichen Verleger hinzu.
Related Tasks
Replikation
So erstellen und konfigurieren Sie eine 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 (SQL Server PowerShell)
Angeben der Endpunkt-URL beim Hinzufügen oder Ändern eines Verfügbarkeitsreplikats (SQL Server)
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)