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 de banco de dados e assinaturas

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 em um grupo de disponibilidade.

  1. Configurar a distribuição no distribuidor. Se procedimentos armazenados estiverem sendo usados para a 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  
    EXEC sys.sp_adddistributor  
        @distributor = 'MyDistributor',  
        @password = '**Strong password for distributor**';  
    
  2. Criar o banco de dados de distribuição no distribuidor. Se procedimentos armazenados estiverem sendo usados para a configuração, execute sp_adddistributiondb.

    USE master;  
    GO  
    EXEC sys.sp_adddistributiondb  
        @database = 'distribution',  
        @security_mode = 1;  
    
  3. 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 de publicador, que é executado dos agentes de replicação, se conecta à réplica primária 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  
    EXEC sys.sp_adddistpublisher  
        @publisher = 'AGPrimaryReplicaHost',  
        @distribution_db = 'distribution',  
        @working_directory = '\\MyReplShare\WorkingDir',  
        @login = 'MyPubLogin',  
        @password = '**Strong password for publisher**';  
    

Para obter mais informações, confira sp_adddistpublisher (Transact-SQL).

Configurar o publicador no publicador original

  1. Configurar um distribuidor remoto. Se procedimentos armazenados estiverem sendo usados para configurar o publicador, execute sp_adddistributor. Especifique o mesmo valor para @password que o usado quando sp_adddistrbutor foi executado no distribuidor para configurar a distribuição.

    exec sys.sp_adddistributor  
        @distributor = 'MyDistributor',  
        @password = 'MyDistPass'  
    
  2. Habilitar o banco de dados para replicação. Se procedimentos armazenados estiverem sendo usados para configurar o publicador, execute sp_replicationdboption. Se as replicações transacional e de mesclagem forem configurada para o banco de dados, cada uma deverá ser habilitada.

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

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 o DDL para configurar o grupo de disponibilidade, o seguinte exemplo de código 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 int;  
EXEC @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ária como publicadores de replicação

Uma réplica secundária não pode agir como um publicador de replicação ou republicador, mas a replicação deve ser configurada de forma 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 publicadores 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.

EXEC 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 que foi usada quando sp_adddistributor foi executado originalmente no distribuidor. Se procedimentos armazenados estiverem sendo usados para configurar a distribuição, o parâmetro @password de sp_adddistributor será usado para especificar a senha.

EXEC 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 procedimentos armazenados estiverem sendo usados para configurar os publicadores remotos, use sp_addlinkedserver para adicionar os assinantes (caso ainda não estejam presentes) como servidores vinculados aos publicadores.

EXEC sys.sp_addlinkedserver   
    @server = 'MySubscriber';  

5. Redirecionar o publicador 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 do grupo de disponibilidade.

USE distribution;  
GO  
EXEC 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 estão configurados para servir como publicadores para o banco de dados publicado.

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;  

O procedimento armazenado sp_validate_replica_hosts_as_publishers 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. Diferentemente de sp_validate_redirected_publisher, ele usa as credenciais do chamador e não usa o logon retido em msdb.dbo.MSdistpublishers para se conectar às réplicas de grupo de disponibilidade.

Observação

sp_validate_replica_hosts_as_publishers falhará com o erro a seguir ao validar hosts de réplica secundária que não permitirem acesso de leitura ou exigirem a especificação da intenção de leitura.

Msg 21899, Level 11, State 1, Procedure sp_hadr_verify_subscribers_at_publisher, Line 109

A 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. Qualquer movimento de dados é suspenso ou a réplica de disponibilidade não é 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 publicador original ao Replication Monitor

Em cada réplica de grupo de disponibilidade, adicione o publicador original ao Replication Monitor.

Related Tasks

Replicação

Para criar e configurar um grupo de disponibilidade