Condividi tramite


Configurare la replica per gli Always On Availability Groups (SQL Server)

La configurazione della replica di SQL Server e dei gruppi di disponibilità AlwaysOn prevede sette passaggi. Ogni passaggio è descritto in modo più dettagliato nelle sezioni seguenti.

1. Configurare le pubblicazioni e le sottoscrizioni del database

Configurare il server di distribuzione

Il server di distribuzione non deve essere un host per le repliche correnti (o previste) del gruppo di disponibilità di cui il database di pubblicazione è o diventerà membro.

  1. Configurare la distribuzione nel server di distribuzione. Se per la configurazione vengono usate stored procedure, eseguire sp_adddistributor. Usare il parametro @password per identificare la password che verrà usata quando un server di pubblicazione remoto si connette al server di distribuzione. La password sarà necessaria anche in ogni server di pubblicazione remoto quando il server di distribuzione remoto è configurato.

    USE master;  
    GO  
    EXEC sys.sp_adddistributor  
        @distributor = 'MyDistributor',  
        @password = '**Strong password for distributor**';  
    
  2. Creare il database di distribuzione presso il distributore. Se per la configurazione vengono usate stored procedure, eseguire sp_adddistributiondb.

    USE master;  
    GO  
    EXEC sys.sp_adddistributiondb  
        @database = 'distribution',  
        @security_mode = 1;  
    
  3. Configurare il server di pubblicazione remoto. Se vengono usate stored procedure per configurare il server di distribuzione, eseguire sp_adddistpublisher. Il parametro @security_mode viene usato per determinare il modo in cui la stored procedure di convalida del publisher eseguita dagli agenti di replica si connette al primario corrente. Se impostato su 1, l'autenticazione di Windows viene utilizzata per connettersi al server primario attuale. Se impostato su 0, l'autenticazione di SQL Server viene usata con i valori di @login e @password specificati. L'account di accesso e la password specificati devono essere validi in ogni replica secondaria affinché la stored procedure di convalida si connetta correttamente a tale replica.

    Annotazioni

    Se gli agenti di replica modificati vengono eseguiti in un computer diverso dal server di distribuzione, l'uso dell'autenticazione di Windows per la connessione al server primario richiederà la configurazione dell'autenticazione Kerberos per la comunicazione tra i computer host di replica. L'uso di un account di accesso di SQL Server per la connessione al database primario corrente non richiederà l'autenticazione Kerberos.

    USE master;  
    GO  
    EXEC sys.sp_adddistpublisher  
        @publisher = 'AGPrimaryReplicaHost',  
        @distribution_db = 'distribution',  
        @working_directory = '\\MyReplShare\WorkingDir',  
        @login = 'MyPubLogin',  
        @password = '**Strong password for publisher**';  
    

Per altre informazioni, vedere sp_adddistpublisher (Transact-SQL).

Configurare il pubblicatore presso il pubblicatore originale

  1. Configurare la distribuzione remota. Se vengono usate stored procedure per configurare il server di pubblicazione, eseguire sp_adddistributor. Specificare lo stesso valore per @password usato quando sp_adddistrbutor è stato eseguito nel server di distribuzione per configurare la distribuzione.

    exec sys.sp_adddistributor  
        @distributor = 'MyDistributor',  
        @password = 'MyDistPass'  
    
  2. Abilitare il database per la replica. Se si utilizzano stored procedure per configurare il server di pubblicazione, eseguire il comando sp_replicationdboption. Se la replica transazionale e di tipo merge deve essere configurata per il database, ognuna deve essere abilitata.

    USE master;  
    GO  
    EXEC sys.sp_replicationdboption  
        @dbname = 'MyDBName',  
        @optname = 'publish',  
        @value = 'true';  
    
    EXEC sys.sp_replicationdboption  
        @dbname = 'MyDBName',  
        @optname = 'merge publish',  
        @value = 'true';  
    
  3. Creare la pubblicazione di replicazione, gli articoli e le sottoscrizioni. Per altre informazioni su come configurare la replica, vedere Pubblicazione di dati e oggetti di database.

2. Configurare il gruppo di disponibilità AlwaysOn

All'intento primario, crea il gruppo di disponibilità includendo il database pubblicato (o da pubblicare) come database membro. Se si usa la procedura guidata del gruppo di disponibilità, è possibile consentire alla procedura guidata di sincronizzare inizialmente i database delle repliche secondarie oppure eseguire manualmente l'inizializzazione tramite il backup e il ripristino.

Creare un listener DNS per il gruppo di disponibilità che verrà usato dagli agenti di replica per connettersi al nodo primario corrente. Il nome del listener specificato verrà usato come destinazione del reindirizzamento per la coppia di database di pubblicazione/pubblicazione originale. Ad esempio, se si usa DDL per configurare il gruppo di disponibilità, è possibile usare l'esempio di codice seguente per specificare un listener del gruppo di disponibilità per un gruppo di disponibilità esistente denominato MyAG:

ALTER AVAILABILITY GROUP 'MyAG'   
    ADD LISTENER 'MyAGListenerName' (WITH IP (('10.120.19.155', '255.255.254.0')));  

Per altre informazioni, vedere Creazione e configurazione di gruppi di disponibilità (SQL Server).

3. Assicurarsi che tutti gli host di replica secondaria siano configurati per la replica

In ogni host di replica secondaria verificare che SQL Server sia stato configurato per supportare la replica. È possibile eseguire la query seguente in ogni host di replica secondaria per determinare se è installata la replica:

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

Se @installed è 0, è necessario aggiungere la replica all'installazione di SQL Server.

4. Configurare gli host di replica secondaria come editori di replica

Una replica secondaria non può fungere da server di pubblicazione di replica o ripubblicazione, ma la replica deve essere configurata in modo che la replica secondaria possa assumere il controllo dopo un failover. Nel server di distribuzione configurare la distribuzione per ogni host di replica secondaria. Specificare lo stesso database di distribuzione e la directory di lavoro specificati quando il server di pubblicazione originale è stato aggiunto al server di distribuzione. Se si utilizzano stored procedure per configurare la distribuzione, utilizzare sp_adddistpublisher per associare i server di pubblicazione remoti al server di distribuzione. Se @login e @password sono stati usati per il server di pubblicazione originale, specificare gli stessi valori per ognuno quando si aggiungono gli host di replica secondaria come server di pubblicazione.

EXEC sys.sp_adddistpublisher  
    @publisher = 'AGSecondaryReplicaHost',  
    @distribution_db = 'distribution',  
    @working_directory = '\\MyReplShare\WorkingDir',  
    @login = 'MyPubLogin',  
    @password = '**Strong password for publisher**';  

In ogni host di replica secondaria configurare la distribuzione. Identificare il distributore del pubblicatore originale come distributore remoto. Usare la stessa password usata quando sp_adddistributor è stata eseguita originariamente nel server di distribuzione. Se vengono usate stored procedure per configurare la distribuzione, il parametro @password di sp_adddistributor viene usato per specificare la password.

EXEC sp_adddistributor   
    @distributor = 'MyDistributor',  
    @password = '**Strong password for distributor**';  

In ogni host di replica secondaria, assicurati che i sottoscrittori di tipo push delle pubblicazioni di database siano visualizzati come server collegati. Se le stored procedure vengono usate per configurare i server di pubblicazione remoti, usare sp_addlinkedserver per aggiungere i sottoscrittori (se non già presenti) come server collegati ai server di pubblicazione.

EXEC sys.sp_addlinkedserver   
    @server = 'MySubscriber';  

5. Reindirizzare il gestore di pubblicazione originale al nome del listener AG

Nel server di distribuzione, eseguire nel database di distribuzione la stored procedure sp_redirect_publisher per associare il server di pubblicazione originale e il database pubblicato al nome del listener del gruppo di disponibilità.

USE distribution;  
GO  
EXEC sys.sp_redirect_publisher   
@original_publisher = 'MyPublisher',  
    @publisher_db = 'MyPublishedDB',  
    @redirected_publisher = 'MyAGListenerName';  

6. Eseguire la stored procedure di convalida della replica per verificare la configurazione

Nella distribuzione, nel database di distribuzione, eseguire la stored procedure sp_validate_replica_hosts_as_publishers per verificare che tutti gli host replica siano ora configurati come publisher per il database pubblicato.

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;  

La procedura memorizzata sp_validate_replica_hosts_as_publishers deve essere eseguita da un account di accesso con autorizzazione sufficiente su ciascun host di replica del gruppo di disponibilità per ottenere informazioni sul gruppo di disponibilità. A differenza di sp_validate_redirected_publisher, usa le credenziali del chiamante e non usa il login conservato in msdb.dbo.MSdistpublishers per connettersi alle repliche del gruppo di disponibilità.

Annotazioni

sp_validate_replica_hosts_as_publishers non riuscirà con l'errore seguente quando si convalidano gli host di replica secondaria che non consentono l'accesso in lettura o richiedono che venga specificata l'intenzione di lettura.

Messaggio 21899, livello 11, stato 1, procedura sp_hadr_verify_subscribers_at_publisher, riga 109

La query al server di pubblicazione reindirizzato 'MyReplicaHostName' per determinare se ci fossero delle voci sysserver per gli abbonati del server di pubblicazione originale 'MyOriginalPublisher' non è riuscita con errore '976', messaggio di errore 'Errore 976, Livello 14, Stato 1, Messaggio: Il database di destinazione, 'MyPublishedDB', partecipa a un gruppo di disponibilità e attualmente non è accessibile per le query. Lo spostamento dei dati è sospeso o la replica di disponibilità non è abilitata per l'accesso in lettura. Per consentire l'accesso in sola lettura a questo e ad altri database nel gruppo di disponibilità, abilitare l'accesso in lettura a una o più repliche di disponibilità secondarie nel gruppo. Per altre informazioni, vedere l'istruzione ALTER AVAILABILITY GROUP nella documentazione online di SQL Server.

Si sono verificati uno o più errori di convalida del publisher per l'host di replica "MyReplicaHostName".

Si tratta di un comportamento previsto. È necessario verificare la presenza delle voci del server di sottoscrizione su questi host di replica secondaria effettuando direttamente una query per le voci sysserver sull'host.

7. Aggiungere l'Editore Originale al Monitor di Replicazione

In ogni replica del gruppo di disponibilità, aggiungere il server di pubblicazione originale al Monitor di Replica.

Attività correlate

Replicazione

Per creare e configurare un gruppo di disponibilità

Vedere anche

Prerequisiti, restrizioni e consigli per i gruppi di disponibilità AlwaysOn (SQL Server)
Panoramica dei gruppi di disponibilità AlwaysOn (SQL Server)
Gruppi di disponibilità AlwaysOn: interoperabilità (SQL Server)
Replica di SQL Server