Condividi tramite


Sottoscrittori di replica e gruppi di disponibilità AlwaysOn (SQL Server)

Quando viene eseguito il failover di un gruppo di disponibilità AlwaysOn contenente un database che è un sottoscrittore di replica, la sottoscrizione di replica potrebbe non riuscire. Per i sottoscrittori push della replica transazionale, l'agente di distribuzione continuerà a replicare automaticamente dopo un failover se la sottoscrizione è stata creata usando il nome del listener AG. Per i sottoscrittori pull della replica transazionale, l'agente di distribuzione continuerà a replicare automaticamente dopo un failover, se la sottoscrizione è stata creata usando il nome del listener AG e il server sottoscrittore originale è operativo. Ciò è dovuto al fatto che i processi dell'agente di distribuzione vengono creati solo nel sottoscrittore originale (replica primaria del gruppo di disponibilità). Per i sottoscrittori di tipo merge, un amministratore di replica deve riconfigurare manualmente il sottoscrittore ricreando la sottoscrizione.

Che cos'è supportato

La replica di SQL Server supporta il failover automatico del pubblicatore, il failover automatico degli abbonati transazionali e il failover manuale degli abbonati di tipo merge. Il failover di un server di distribuzione in un database di disponibilità non è supportato. AlwaysOn non può essere combinato con scenari Websync e SQL Server Compact.

Failover di una sottoscrizione pull di tipo merge

Una sottoscrizione pull fallisce in caso di failover del gruppo di disponibilità, perché l'agente pull non riesce a trovare i processi archiviati nel database msdb dell'istanza del server che ospita la replica primaria, che non è disponibile perché l'istanza del server è inattiva.

Failover di una sottoscrizione push di tipo merge

Una sottoscrizione push fallisce in caso di failover del gruppo di disponibilità, poiché l'agente push non può più connettersi al database di sottoscrizione originale sul sottoscrittore originario.

Come creare una sottoscrizione transazionale in un ambiente AlwaysOn

Per la replica transazionale, seguire questa procedura per configurare ed eseguire il failover di un gruppo di disponibilità del sottoscrittore:

  1. Prima di creare la sottoscrizione, aggiungere il database sottoscrittore al gruppo di disponibilità AlwaysOn appropriato.

  2. Aggiungere come server collegato il listener del gruppo di disponibilità del sottoscrittore a tutti i nodi del gruppo di disponibilità. Questo passaggio garantisce che tutti i potenziali partner di failover siano informati di e possano connettersi al listener.

  3. Usando lo script nella sezione Creazione di una sottoscrizione push di replica transazionale seguente, creare la sottoscrizione usando il nome del listener del gruppo di disponibilità del sottoscrittore. Dopo un failover, il nome del listener rimarrà sempre valido, mentre il nome effettivo del server del sottoscrittore dipenderà dal nodo effettivo che è diventato il nuovo primario.

    Annotazioni

    La sottoscrizione deve essere creata usando uno script Transact-SQL e non può essere creata tramite Management Studio.

  4. Se si crea una sottoscrizione pull:

    1. In Management Studio, apri l'albero di SQL Server Agent nel nodo del sottoscrittore primario.

    2. Identificare il lavoro dell'agente di distribuzione Pull e modificare il lavoro.

    3. Nel passaggio Esegui processo dell'agente controllare i parametri -Publisher e -Distributor. Assicurarsi che questi parametri contengano i nomi corretti del server diretto e dell'istanza del server di pubblicazione e del server di distribuzione.

    4. Modificare il -Subscriber parametro con il nome del listener del gruppo di disponibilità del sottoscrittore.

Quando si crea la sottoscrizione seguendo questa procedura, non sarà necessario eseguire alcuna operazione dopo un failover.

Creazione di una sottoscrizione push per una replica di tipo transazionale

-- commands to execute at the publisher, in the publisher database:  
use [<publisher database name>]  
EXEC sp_addsubscription @publication = N'<publication name>',   
       @subscriber = N'<availability group listener name>',   
       @destination_db = N'<subscriber database name>',   
       @subscription_type = N'Push',   
       @sync_type = N'automatic', @article = N'all', @update_mode = N'read only', @subscriber_type = 0;  
GO  
  
EXEC sp_addpushsubscription_agent @publication = N'<publication name>',   
       @subscriber = N'<availability group listener name>',   
       @subscriber_db = N'<subscriber database name>',   
       @job_login = null, @job_password = null, @subscriber_security_mode = 1;  
GO  

Per riprendere gli agenti di merge dopo il failover del gruppo di disponibilità del Sottoscrittore

Per la replica di tipo merge, un amministratore di replica deve riconfigurare manualmente il sottoscrittore seguendo questa procedura:

  1. Eseguire sp_subscription_cleanup per rimuovere la sottoscrizione precedente per il sottoscrittore. Eseguire questa azione sulla nuova replica primaria ( precedentemente la replica secondaria).

  2. Ricreare la sottoscrizione creando una nuova sottoscrizione, a partire da un nuovo snapshot.

Annotazioni

Il processo corrente è scomodo per i sottoscrittori della replica di tipo merge, tuttavia lo scenario principale per la replica di tipo merge è utenti disconnessi (desktop, portatili, dispositivi portatili) che non utilizzeranno i gruppi di disponibilità AlwaysOn nel sottoscrittore.