Assinantes de replicação e grupos de disponibilidade AlwaysOn (SQL Server)
Quando um grupo de disponibilidade AlwaysOn contendo um banco de dados que é um assinante de replicação executar failover, a assinatura de replicação poderá 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
SQL Server replicação dá suporte ao failover automático do editor, 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 pull de mesclagem
Uma assinatura pull apresenta falha após o failover do grupo de disponibilidade porque o agente de pull não pode localizar os trabalhos armazenados no banco de dados msdb da instância de servidor que hospeda a réplica primária, que não está disponível porque a instância do servidor apresentou falha.
Failover de uma assinatura push de mesclagem
Uma assinatura push apresenta falha após o failover do grupo de disponibilidade porque o agente de push não pode mais se conectar ao banco de dados de assinatura original no assinante original.
Como criar uma assinatura transacional em um ambiente AlwaysOn
Para a replicação transacional, use as seguintes etapas para configurar e fazer o failover de um grupo de disponibilidade do assinante:
Antes de criar a assinatura, adicione o banco de dados do assinante ao grupo de disponibilidade AlwaysOn apropriado.
Adicione o ouvinte do grupo de disponibilidade do assinante como um servidor vinculado para 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.
Usando o script da seção abaixo Criando uma assinatura push de replicação transacional , crie a assinatura usando o nome do ouvinte de 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.
Se estiver criando uma assinatura pull:
No Management Studio, no nó do assinante primário, abra a árvore SQL Server Agent.
Identifique o trabalho do Agente de Distribuição de Pull e edite o trabalho.
Na etapa de trabalho Executar Agente , verifique os parâmetros
-Publisher
e-Distributor
. Verifique se esses parâmetros contêm os nomes diretos do servidor e a instância corretos do servidor do publicador e do distribuidor.Altere o parâmetro
-Subscriber
para o nome do ouvinte do grupo de disponibilidade do assinante.
Quando você cria sua assinatura seguindo essas etapas, não precisa 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 retomar 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:
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).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 a replicação de mesclagem é de usuários desconectados (áreas de trabalho, laptops, dispositivos de fone) que não usarão grupos de disponibilidade AlwaysOn no assinante.