Compartilhar via


Assinantes de replicação e grupos de disponibilidade AlwaysOn (SQL Server)

Quando um grupo de disponibilidade AlwaysOn que contém um banco de dados que é um assinante de replicação faz failover, a assinatura de replicação pode falhar. Para assinantes por push de replicação transacional, o agente de distribuição continuará a replicar automaticamente após um failover se a assinatura tiver sido criada usando o nome do ouvinte do grupo de disponibilidade. Para assinantes por pull de replicação transacional, o agente de distribuição continuará a replicar automaticamente após um failover se a assinatura tiver sido criada usando o nome do ouvinte do grupo de disponibilidade e o servidor original do assinante estiver em execução. Isso ocorre porque os trabalhos de agente de distribuição são criados somente no assinante original (réplica primária do grupo de disponibilidade). Para mesclar assinantes, um administrador de replicação deve reconfigurar o assinante manualmente, recriando a assinatura.

O que tem suporte

A replicação do SQL Server dá suporte ao failover automático do publicador, ao failover automático de assinantes transacionais e ao failover manual de assinantes de mesclagem. Não há suporte para o failover de um distribuidor em um banco de dados de disponibilidade. O AlwaysOn não pode ser combinado com cenários Websync e SQL Server Compact.

Failover de uma assinatura de pull de mesclagem

Uma assinatura de pull falha após o failover do grupo de disponibilidade, porque o agente de pull não consegue encontrar os jobs armazenados no banco de dados msdb da instância do servidor que hospeda a réplica primária. Isso ocorre porque a instância do servidor falhou e não está disponível.

Failover de uma assinatura de push de mesclagem

Uma assinatura push falha após a mudança de grupo de disponibilidade, porque o agente push não consegue mais se conectar ao banco de dados da assinatura original no assinante original.

Como criar uma assinatura transacional em um ambiente AlwaysOn

Para replicação transacional, use as seguintes etapas para configurar e realizar o failover de um grupo de disponibilidade de assinantes:

  1. Antes de criar a assinatura, adicione o banco de dados do assinante ao grupo de disponibilidade AlwaysOn apropriado.

  2. Adicione o ouvinte do grupo de disponibilidade do assinante como um servidor vinculado a todos os nós do grupo de disponibilidade. Essa etapa garante que todos os parceiros de failover potenciais estejam cientes de e possam se conectar ao ouvinte.

  3. Usando o script na seção Criando uma assinatura push de replicação transacional abaixo, crie a assinatura usando o nome do ouvinte do grupo de disponibilidade do assinante. Depois de um failover, o nome do ouvinte sempre permanecerá válido, enquanto que o nome de servidor real do assinante dependerá do nó real que se tornou o novo primário.

    Observação

    A assinatura deve ser criada usando um script Transact-SQL e não pode ser criada usando o Management Studio.

  4. Se estiver criando uma assinatura pull:

    1. No Management Studio, no nó do assinante primário, abra a árvore do SQL Server Agent.

    2. Identifique o trabalho do Pull Distribution Agent e edite-o.

    3. Na etapa de trabalho Executar Agente, verifique os parâmetros -Publisher e -Distributor. Verifique se esses parâmetros contêm o servidor direto correto e os nomes de instância do publicador e do servidor distribuidor.

    4. Altere o parâmetro -Subscriber para o nome do ouvinte do grupo de disponibilidade do assinante.

Ao criar sua assinatura seguindo estas etapas, você não precisará fazer nada após um failover.

Criando uma assinatura push de replicação transacional

-- 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  

Para reiniciar os agentes de mesclagem após o failover do grupo de disponibilidade do assinante

Para a replicação de mesclagem, um administrador de replicação deve reconfigurar o assinante manualmente com as seguintes etapas:

  1. Execute sp_subscription_cleanup para remover a assinatura antiga para o assinante. Execute esta ação na nova réplica primária (a antiga réplica secundária).

  2. Recrie a assinatura criando uma nova assinatura, começando por um novo instantâneo.

Observação

O processo atual é inconveniente para assinantes de replicação de mesclagem. Entretanto, o cenário principal para replicação de mesclagem são os usuários desconectados (desktops, laptops, dispositivos móveis), que não utilizarão AlwaysOn availability groups no assinante.