Konfigurieren der Replikation für Always On-Verfügbarkeitsgruppen (SQL Server)Configure Replication for Always On Availability Groups (SQL Server)

Dieses Thema gilt für: JaSQL ServerkeineAzure SQL-DatenbankkeineAzure SQL Data Warehouse keine Parallel DatawarehouseTHIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Die Konfiguration der SQL ServerSQL Server -Replikation und von Always On-Verfügbarkeitsgruppen umfasst sieben Schritte.Configuring SQL ServerSQL Server replication and Always On availability groups involves seven steps. Jeder dieser Schritte wird in den folgenden Abschnitten detailliert beschrieben.Each step is described in more detail in the following sections.

  1. Konfigurieren Sie die Datenbankveröffentlichungen und die Abonnements.Configure the database publications and subscriptions.

  2. Konfigurieren Sie die Always On-Verfügbarkeitsgruppe.Configure the Always On availability group.

  3. Stellen Sie sicher, dass alle sekundären Replikathosts zur Replikation konfiguriert werden.Insure that all secondary replica hosts are configured for replication.

  4. Konfigurieren Sie die sekundären Replikathosts als Replikationsverleger.Configure the secondary replica hosts as replication publishers.

  5. Leiten Sie den ursprünglichen Verleger zum Namen des Verfügbarkeitsgruppenlisteners um.Redirect the original publisher to the Availability Group Listener Name.

  6. Führen Sie die gespeicherte Prozedur zum Überprüfen aus, um die Konfiguration zu überprüfen.Run the validation stored procedure to verify the configuration.

  7. So fügen Sie dem Replikationsmonitor den ursprünglichen Verleger hinzu.Add the original publisher to Replication Monitor.

    Schritt 1 und 2 können in beliebiger Reihenfolge ausgeführt werden.Steps 1 and 2 can be performed in either order.

1. Konfigurieren der Datenbankveröffentlichungen und Abonnements1. Configure the Database Publications and Subscriptions

Konfigurieren des VerteilersConfigure the distributor

Die Verteilungsdatenbank kann nicht in einer Verfügbarkeitsgruppe platziert werden.The distribution database cannot be placed in an availability group.

  1. Konfigurieren Sie Verteilung beim Verteiler.Configure distribution at the distributor. Wenn gespeicherte Prozeduren zur Konfiguration verwendet werden, führen Sie sp_adddistributoraus.If stored procedures are being used for configuration, run sp_adddistributor. Verwenden Sie den @password -Parameter, um das Kennwort zu identifizieren, das verwendet wird, wenn ein Remoteverleger eine Verbindung mit dem Verteiler herstellt.Use the @password parameter to identify the password that will be used when a remote publisher connects to the distributor. Das Kennwort wird auch bei jedem Remoteverleger benötigt, wenn der Remoteverteiler eingerichtet wird.The password will also be needed at each remote publisher when the remote distributor is set up.

    USE master;  
    GO  
    EXEC sys.sp_adddistributor  
        @distributor = 'MyDistributor',  
        @password = '**Strong password for distributor**';  
    
  2. Erstellen Sie die Verteilungsdatenbank beim Verteiler.Create the distribution database at the distributor. Wenn gespeicherte Prozeduren zur Konfiguration verwendet werden, führen Sie sp_adddistributiondbaus.If stored procedures are being used for configuration, run sp_adddistributiondb.

    USE master;  
    GO  
    EXEC sys.sp_adddistributiondb  
        @database = 'distribution',  
        @security_mode = 1;  
    
  3. Konfigurieren Sie den Remoteverleger.Configure the remote publisher. Wenn gespeicherte Prozeduren zur Konfiguration des Verteilers verwendet werden, führen Sie sp_adddistpublisheraus.If stored procedures are being used to configure the distributor, run sp_adddistpublisher. 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.The @security_mode parameter is used to determine how the publisher validation stored procedure that is run from the replication agents, connects to the current primary. Wenn der Parameter auf 1 festgelegt ist, wird die Windows-Authentifizierung verwendet, um eine Verbindung mit dem aktuellen primären Replikat herzustellen.If set to 1 Windows authentication is used to connect to the current primary. Wenn er auf 0 festgelegt ist, wird die SQL ServerSQL Server -Authentifizierung mit den angegebenen Werten für @login und @password verwendet.If set to 0, SQL ServerSQL Server authentication is used with the specified @login and @password values. 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.The login and password specified must be valid at each secondary replica for the validation stored procedure to successfully connect to that replica.

    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.If any modified replication agents run on a computer other than the distributor, use of Windows authentication for the connection to the primary will require Kerberos authentication to be configured for the communication between the replica host computers. Bei Verwendung einer SQL ServerSQL Server-Anmeldung zum Herstellen einer Verbindung mit dem aktuellen primären Replikat ist keine Kerberos-Authentifizierung erforderlich.Use of a SQL ServerSQL Server login for the connection to the current primary will not require Kerberos authentication.

    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).For more information, see sp_adddistpublisher (Transact-SQL).

    Konfigurieren des Verlegers beim ursprünglichen VerlegerConfigure the publisher at the original publisher

  4. Konfigurieren Sie die Remoteverteilung.Configure remote distribution. Wenn gespeicherte Prozeduren zur Konfiguration des Verlegers verwendet werden, führen Sie sp_adddistributoraus.If stored procedures are being used to configure the publisher, run sp_adddistributor. Geben Sie den Wert für @password an, der verwendet wurde, als sp_adddistrbutor beim Verteiler ausgeführt wurde, um die Verteilung einzurichten.Specify the same value for @password as that used when sp_adddistrbutor was run at the distributor to set up distribution.

    exec sys.sp_adddistributor  
        @distributor = 'MyDistributor',  
        @password = 'MyDistPass'  
    
  5. Aktivieren Sie die Datenbank für die Replikation.Enable the database for replication. Wenn gespeicherte Prozeduren zur Konfiguration des Verlegers verwendet werden, führen Sie sp_replicationdboptionaus.If stored procedures are being used to configure the publisher, run sp_replicationdboption. Wenn sowohl Transaktions- als auch Mergereplikation für die Datenbank konfiguriert werden sollen, müssen beide aktiviert werden.If both transactional and merge replication are to be configured for the database, each must be enabled.

    USE master;  
    GO  
    EXEC sys.sp_replicationdboption  
        @dbname = 'MyDBName',  
        @optname = 'publish',  
        @value = 'true';  
    
    EXEC sys.sp_replicationdboption  
        @dbname = 'MyDBName',  
        @optname = 'merge publish',  
        @value = 'true';  
    
  6. Erstellen Sie die Replikationsveröffentlichung, Artikel und Abonnements.Create the replication publication, articles, and subscriptions. Weitere Informationen zum Konfigurieren der Replikation finden Sie unter "Veröffentlichen von Daten und Datenbankobjekten".For more information about how to configure replication, see Publishing Data and Database objects.

2. Konfigurieren der Always On-Verfügbarkeitsgruppe2. Configure the Always On Availability Group

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.At the intended primary, create the availability group with the published (or to be published) database as a member database. 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.If using the Availability Group Wizard, you can either allow the wizard to initially synchronize the secondary replica databases or you can perform the initialization manually by using backup and restore.

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.Create a DNS listener for the availability group that will be used by the replication agents to connect to the current primary. Der angegebene Listenername wird als Umleitungsziel für das aus ursprünglichem Verleger und veröffentlichter Datenbank bestehende Paar verwendet.The listener name that is specified will be used as the target of redirection for the original publisher/published database pair. 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:For example, if you are using DDL to configure the availability group, the following code example can be used to specify an availability group listener for an existing availability group named MyAG:

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).For more information, see Creation and Configuration of Availability Groups (SQL Server).

3. Stellen Sie sicher, dass alle sekundären Replikathosts für die Replikation konfiguriert werden.3. Insure that all of the Secondary Replica Hosts are Configured for Replication

Überprüfen Sie bei jedem sekundären Replikathost, ob SQL ServerSQL Server so konfiguriert wurde, dass die Replikation unterstützt wird.At each secondary replica host, verify that SQL ServerSQL Server has been configured to support replication. Die folgende Abfrage kann auf jedem sekundären Replikathost ausgeführt werden, um zu bestimmen, ob die Replikation installiert wurde:The following query can be run at each secondary replica host to determine whether replication is installed:

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

Wenn @installed gleich 0 ist, muss die Replikation der SQL ServerSQL Server -Installation hinzugefügt werden.If @installed is 0, replication must be added to the SQL ServerSQL Server installation.

4. Konfigurieren des sekundären Replikathosts als Replikationsverleger4. Configure the Secondary Replica Hosts as Replication Publishers

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.A secondary replica cannot act as a replication publisher or republisher but replication must be configured so that the secondary can take over after a failover. Konfigurieren Sie beim Verteiler die Verteilung für jeden sekundären Replikathost.At the distributor, configure distribution for each secondary replica host. Geben Sie die Verteilungsdatenbank und das Arbeitsverzeichnis an, die angegeben wurden, als der ursprüngliche Verleger dem Verteiler hinzugefügt wurde.Specify the same distribution database and working directory as was specified when the original publisher was added to the distributor. Wenn Sie gespeicherte Prozeduren zum Konfigurieren der Verteilung verwenden, führen Sie sp_adddistpublisher aus, um die Remoteverleger dem Verteiler zuzuordnen.If you are using stored procedures to configure distribution, use sp_adddistpublisher to associate the remote publishers with the distributor. 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.If @login and @password were used for the original publisher, specify the same values for each when you add the secondary replica hosts as publishers.

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.At each secondary replica host, configure distribution. Identifizieren Sie den Verteiler des ursprünglichen Verlegers als Remoteverteiler.Identify the distributor of the original publisher as the remote distributor. Verwenden Sie das Kennwort, das bei der ursprünglichen Ausführung von sp_adddistributor auf dem Verteiler verwendet wurde.Use the same password as that used when sp_adddistributor was run originally at the distributor. Wenn gespeicherte Prozeduren zum Konfigurieren der Verteilung verwendet werden, wird der Parameter @password von sp_adddistributor verwendet, um das Kennwort anzugeben.If stored procedures are being used to configure distribution, the @password parameter of sp_adddistributor is used to specify the password.

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.At each secondary replica host, make sure that the push subscribers of the database publications appear as linked servers. 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.If stored procedures are being used to configure the remote publishers, use sp_addlinkedserver to add the subscribers (if not already present) as linked servers to the publishers.

EXEC sys.sp_addlinkedserver   
    @server = 'MySubscriber';  

5. Umleiten des ursprünglichen Verlegers zum Namen des Verfügbarkeitsgruppenlisteners5. Redirect the Original Publisher to the AG Listener Name

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.At the distributor, in the distribution database, run the stored procedure sp_redirect_publisher to associate the original publisher and the published database with the availability group listener name of the availability group.

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üfen6. Run the Replication Validation Stored Procedure to Verify the Configuration

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.At the distributor, in the distribution database, run the stored procedure sp_validate_replica_hosts_as_publishers to verify that all replica hosts are now configured to serve as publishers for the published database.

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.The stored procedure sp_validate_replica_hosts_as_publishers should be run from a login with sufficient authorization at each availability group replica host to query for information about the availability group. 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.Unlike sp_validate_redirected_publisher, it uses the credentials of the caller and does not use the login retained in msdb.dbo.MSdistpublishers to connect to the availability group replicas.

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.sp_validate_replica_hosts_as_publishers will fail with the following error when validating secondary replica hosts that do not allow read access, or require read intent to be specified.

Meldung 21899, Ebene 11, Status 1, Prozedur sp_hadr_verify_subscribers_at_publisher, Zeile 109Msg 21899, Level 11, State 1, Procedure sp_hadr_verify_subscribers_at_publisher, Line 109

Die Abfrage beim umgeleiteten Verleger 'MyReplicaHostName', mit der bestimmt werden sollte, ob sysserver-Einträge für die Abonnenten des ursprünglichen Verlegers 'MyOriginalPublisher' vorlagen, schlug mit Fehler '976', Fehlermeldung 'Fehler 976, Ebene 14, Status 1, Meldung fehl: Die Zieldatenbank, 'MyPublishedDB', nimmt an einer Verfügbarkeitsgruppe teil, und ist derzeit nicht für Abfragen verfügbar.The query at the redirected publisher 'MyReplicaHostName' to determine whether there were sysserver entries for the subscribers of the original publisher 'MyOriginalPublisher' failed with error '976', error message 'Error 976, Level 14, State 1, Message: The target database, 'MyPublishedDB', is participating in an availability group and is currently not accessible for queries. Entweder die Datenverschiebung wurde angehalten, oder für das Verfügbarkeitsreplikat wurde kein Schreibzugriff aktiviert.Either data movement is suspended or the availability replica is not enabled for read access. 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.To allow read-only access to this and other databases in the availability group, enable read access to one or more secondary availability replicas in the group. Weitere Informationen finden Sie in der ALTER AVAILABILITY GROUP -Anweisung in der SQL ServerSQL Server -Onlinedokumentation.For more information, see the ALTER AVAILABILITY GROUP statement in SQL ServerSQL Server Books Online.'.

Es sind ein oder mehrere Verlegerüberprüfungsfehler für Replikathost 'MyReplicaHostName' aufgetreten.One or more publisher validation errors were encountered for replica host 'MyReplicaHostName'.

Dieses Verhalten wird erwartet.This is expected behavior. 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.You must verify the presence of the subscriber server entries at these secondary replica hosts by querying for the sysserver entries directly at the host.

7. Hinzufügen des ursprünglichen Verlegers zum Replikationsmonitor7. Add the Original Publisher to Replication Monitor

Fügen Sie dem Replikationsmonitor bei jedem Verfügbarkeitsgruppenreplikat den ursprünglichen Verleger hinzu.At each availability group replica, add the original publisher to Replication Monitor.

Verwandte AufgabenRelated Tasks

ReplikationReplication

Siehe auchSee Also

Voraussetzungen, Einschränkungen und Empfehlungen für Always On-Verfügbarkeitsgruppen (SQL Server) Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server)
Übersicht über Always On-Verfügbarkeitsgruppen (SQL Server) Overview of Always On Availability Groups (SQL Server)
Always On-Verfügbarkeitsgruppen: Interoperabilität (SQL Server) Always On Availability Groups: Interoperability (SQL Server)
SQL Server-ReplikationSQL Server Replication