Configurar a replicação com Grupos de Disponibilidade AlwaysOn
Aplica-se a:SQL Server – Somente Windows
A configuração dos grupos de disponibilidade AlwaysOn e da replicação do SQL Server envolve sete etapas. Cada etapa está descrita com mais detalhes nas seções a seguir.
1. Configurar as publicações e assinaturas do banco de dados
Configurar o distribuidor
O banco de dados de distribuição não pode ser colocado em um grupo de disponibilidade com o SQL Server 2012 e o SQL Server 2014. A colocação do banco de dados de distribuição em um grupo de disponibilidade tem suporte no SQL 2016 e posterior, exceto no caso de bancos de dados de distribuição usados em topologias de replicação ponto a ponto, de mesclagem ou bidirecionais. Para obter mais informações, confira Configurar o banco de dados de distribuição de replicação no grupo de disponibilidade Always On.
Configurar a distribuição no distribuidor. Se os procedimentos armazenados estiverem sendo usados para configuração, execute
sp_adddistributor
Use o parâmetro @password para identificar a senha que será usada quando um publicador remoto se conectar ao distribuidor. A senha também será necessária em cada publicador remoto quando o distribuidor remoto for instalado.USE master; GO EXECUTE sys.sp_adddistributor @distributor = 'MyDistributor', @password = '**Strong password for distributor**';
Criar o banco de dados de distribuição no distribuidor. Se os procedimentos armazenados estiverem sendo usados para configuração, execute
sp_adddistributiondb
USE master; GO EXECUTE sys.sp_adddistributiondb @database = 'distribution', @security_mode = 1;
Configurar o publicador remoto. Se procedimentos armazenados estiverem sendo usados para configurar o distribuidor, execute
sp_adddistpublisher
. O parâmetro @security_mode é usado para determinar como o procedimento armazenado de validação do editor executado por meio de agentes de replicação executam se conecta ao primário atual. Se a autenticação do Windows definida como 1 for usada na conexão à primária atual. Se estiver definida como 0, a autenticação do SQL Server será usada com os valores @login e @password especificados. O logon e a senha especificada devem ser válidos em cada réplica secundária para o procedimento armazenado de validação se conectar com êxito a essa réplica.Observação
Se qualquer agente de replicação modificado for executado em um computador que não seja o distribuidor, o uso da autenticação do Windows para a conexão à réplica primária exigirá a configuração da autenticação Kerberos para a comunicação entre os computadores host da réplica. O uso de um logon do SQL Server para a conexão à réplica primária atual não requer a autenticação Kerberos.
USE master; GO EXECUTE sys.sp_adddistpublisher @publisher = 'AGPrimaryReplicaHost', @distribution_db = 'distribution', @working_directory = '\\MyReplShare\WorkingDir', @login = 'MyPubLogin', @password = '**Strong password for publisher**';
Para obter mais informações, consulte sp_adddistpublisher.
Configurar o publicador no publicador original
Configurar um distribuidor remoto. Se os procedimentos armazenados estiverem sendo usados para configurar o publicador, execute
sp_adddistributor
Especifique o mesmo valor para @password usado quandosp_adddistrbutor
foi executado no distribuidor para configurar a distribuição.EXECUTE sys.sp_adddistributor @distributor = 'MyDistributor', @password = 'MyDistPass';
Habilitar o banco de dados para replicação. Se os procedimentos armazenados estiverem sendo usados para configurar o publicador, execute
sp_replicationdboption
Se a replicação transacional e de mesclagem estiverem sendo configuradas para o banco de dados, cada um deverá ser habilitado.USE master; GO EXECUTE sys.sp_replicationdboption @dbname = 'MyDBName', @optname = 'publish', @value = 'true'; EXECUTE sys.sp_replicationdboption @dbname = 'MyDBName', @optname = 'merge publish', @value = 'true';
Criar publicações, artigos e assinaturas da replicação. Para obter mais informações sobre como configurar a replicação consulte os objetos Publishing Data e Database.
2. Configurar o grupo de disponibilidade
Na réplica primária pretendida, crie o grupo de disponibilidade com o banco de dados publicado (ou a ser publicado) como um banco de dados membro. Se estiver usando o Assistente de Grupo de Disponibilidade, você poderá permitir que o assistente sincronize os bancos de dados de réplica secundária inicialmente ou poderá executar a inicialização manualmente usando backup e restauração.
Crie um ouvinte de DNS para o grupo de disponibilidade que será usado pelos agentes de replicação para conectar à replicação primária atual. O nome de ouvinte que é especificado será usado como o destino de redirecionamento para o par publicador original/banco de dados publicado. Por exemplo, se você estiver usando DDL para configurar o grupo de disponibilidade, o exemplo de código a seguir poderá ser usado para especificar um ouvinte de grupo de disponibilidade para um grupo de disponibilidade existente chamado MyAG
:
ALTER AVAILABILITY GROUP 'MyAG'
ADD LISTENER 'MyAGListenerName' (WITH IP (('10.120.19.155', '255.255.254.0')));
Para obter mais informações, confira Criação e configuração de Grupos de Disponibilidade (SQL Server).
3. Verifique se todos os hosts de réplica secundária estão configurados para replicação
Em cada host de réplica secundária, verifique se o SQL Server foi configurado para oferecer suporte à replicação. A seguinte consulta pode ser executada em cada host de réplica secundária para determinar se a replicação é instalada:
USE master;
GO
DECLARE @installed AS INT;
EXECUTE @installed = sys.sp_MS_replication_installed;
SELECT @installed;
Se @installed for 0, a replicação deverá ser adicionada à instalação do SQL Server.
4. Configurar os hosts de réplica secundários como editores de replicação
Uma réplica secundária não pode agir como um editor de replicação ou republicador, mas a replicação deve ser configurada de modo que a secundária possa assumir o comando depois de um failover. No distribuidor, configure a distribuição para cada host de réplica secundária. Especifique o mesmo banco de dados de distribuição e diretório de trabalho que foram especificados quando o publicador original foi adicionado ao distribuidor. Se você estiver usando procedimentos armazenados para configurar a distribuição, use sp_adddistpublisher
para associar os editores remotos ao distribuidor. Se foram usados @login e @password para o publicador original, especifique os mesmos valores para cada um quando adicionar os hosts de réplica secundária como publicadores.
EXECUTE sys.sp_adddistpublisher
@publisher = 'AGSecondaryReplicaHost',
@distribution_db = 'distribution',
@working_directory = '\\MyReplShare\WorkingDir',
@login = 'MyPubLogin',
@password = '**Strong password for publisher**';
Em cada host de réplica secundária, configure a distribuição. Identifique o distribuidor do publicador original como o distribuidor remoto. Use a mesma senha usada quando sp_adddistributor
foi executado originalmente no distribuidor. Se os procedimentos armazenados estiverem sendo usados para configurar a distribuição, o parâmetro @password de sp_adddistributor
será usado para especificar a senha.
EXECUTE sp_adddistributor
@distributor = 'MyDistributor',
@password = '**Strong password for distributor**';
Em cada host de réplica secundária, verifique se os assinantes push das publicações de banco de dados aparecem como servidores vinculados. Se os procedimentos armazenados estiverem sendo usados para configurar os editores remotos, use sp_addlinkedserver
para adicionar os assinantes (se ainda não estiverem presentes) como servidores vinculados aos editores.
EXECUTE sys.sp_addlinkedserver @server = 'MySubscriber';
5. Redirecionar o editor original para o nome do ouvinte do AG
No distribuidor, no banco de dados de distribuição, execute o procedimento armazenado sp_redirect_publisher
para associar o publicador original e o banco de dados publicado com o nome do ouvinte de grupo de disponibilidade do grupo de disponibilidade.
USE distribution;
GO
EXECUTE sys.sp_redirect_publisher
@original_publisher = 'MyPublisher',
@publisher_db = 'MyPublishedDB',
@redirected_publisher = 'MyAGListenerName';
6. Executar o procedimento armazenado de validação de replicação para verificar a configuração
No distribuidor, no banco de dados de distribuição, execute o procedimento armazenado sp_validate_replica_hosts_as_publishers
para verificar se todos os hosts de réplica agora estão configurados para atuar como editores para o banco de dados publicado.
USE distribution;
GO
DECLARE @redirected_publisher AS sysname;
EXECUTE sys.sp_validate_replica_hosts_as_publishers
@original_publisher = 'MyPublisher',
@publisher_db = 'MyPublishedDB',
@redirected_publisher = @redirected_publisher OUTPUT;
O sp_validate_replica_hosts_as_publishers
de procedimento armazenado deve ser executado de um logon com autorização suficiente em cada host de réplica de grupo de disponibilidade para consultar informações sobre o grupo de disponibilidade. Ao contrário de sp_validate_redirected_publisher
, ele usa as credenciais do chamador e não usa o logon retido no msdb.dbo.MSdistpublishers
para se conectar às réplicas do grupo de disponibilidade.
Erro ao validar hosts de réplica secundários
sp_validate_replica_hosts_as_publishers
falha com o erro a seguir ao validar hosts de réplica secundários que não permitem acesso de leitura ou exigem que a intenção de leitura seja especificada.
Mensagem 21899, Nível 11, Estado 1, Procedimento
sp_hadr_verify_subscribers_at_publisher
, Linha 109A consulta no publicador redirecionado 'MyReplicaHostName' para determinar se havia entradas de sysserver para os assinantes do publicador original 'MyOriginalPublisher' falhou com o erro '976', mensagem de erro ' Erro 976, Nível 14, Estado 1, Mensagem: O banco de dados de destino, 'MyPublishedDB', está participando de um grupo de disponibilidade e atualmente não está acessível para consultas. A movimentação de dados está suspensa ou a réplica de disponibilidade não está habilitada para acesso de leitura. Para permitir o acesso somente leitura a esse banco de dados e a outros no grupo de disponibilidade, habilite o acesso de leitura para uma ou mais réplicas de disponibilidade secundárias no grupo. Para obter mais informações, consulte a instrução ALTER AVAILABILITY GROUP nos Manuais Online do SQL Server.
Foram encontrados um ou mais erros de validação de publicador para o host de réplica 'MyReplicaHostName'.
Este comportamento é esperado. Você deve verificar a presença das entradas de servidor de assinante nesses hosts de réplica secundária, consultando as entradas de sysserver diretamente no host.
7. Adicionar o editor original ao Replication Monitor
Em cada réplica de grupo de disponibilidade, adicione o publicador original ao Replication Monitor.
Tarefas relacionadas
Replicação
Criar e configurar um grupo de disponibilidade
- Usar a caixa de diálogo Assistente de Grupo de Disponibilidade (SQL Server Management Studio)
- Usar a caixa de diálogo Novo Grupo de Disponibilidade (SQL Server Management Studio)
- Criar um grupo de disponibilidade (Transact-SQL)
- Criar um Grupo de disponibilidade (SQL Server PowerShell)
- Especifique a URL do Ponto de Extremidade Ao Adicionar ou Modificando uma Réplica de disponibilidade (SQL Server)
- Criar um ponto de extremidade de espelhamento de banco de dados para grupos de disponibilidade AlwaysOn (SQL Server PowerShell)
- Unir uma réplica secundária a um grupo de disponibilidade (SQL Server)
- Preparar um banco de dados secundário manualmente para um grupo de disponibilidade (SQL Server)
- Unir um banco de dados secundário a um grupo de disponibilidade (SQL Server)
- Criar ou configurar um ouvinte de grupo de disponibilidade (SQL Server)