Configurar a replicação com grupos de disponibilidade Always On
Aplica-se a:SQL Server - somente Windows
A configuração da replicação do SQL Server e dos grupos de disponibilidade Always On envolve sete etapas. Cada etapa é 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 é suportada com o SQL 2016 e superior, exceto para bancos de dados de distribuição usados em topologias de replicação de mesclagem, bidirecional ou ponto a ponto. Para obter mais informações, consulte Configurar o banco de dados de distribuição de replicação no grupo de disponibilidade Always On.
Configure 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 editor remoto se conectar ao distribuidor. A senha também será necessária em cada editor remoto quando o distribuidor remoto estiver configurado.USE master; GO EXECUTE sys.sp_adddistributor @distributor = 'MyDistributor', @password = '**Strong password for distributor**';
Crie 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;
Configure o editor remoto. Se os procedimentos armazenados estiverem a ser 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, que é executado pelos agentes de replicação, se conecta ao primário atual. Se estiver definido para 1, usa-se a autenticação do Windows para se conectar ao atual primário. Se definido como 0, a autenticação do SQL Server será usada com os valores @login e @password especificados. O login e a senha especificados devem ser válidos em cada réplica secundária para que o procedimento armazenado de validação se conecte com êxito a essa réplica.Observação
Se algum agente de replicação modificado for executado em um computador diferente do distribuidor, o uso da autenticação do Windows para a conexão com o primário exigirá que a autenticação Kerberos seja configurada para a comunicação entre os computadores host da réplica. O uso de um logon do SQL Server para a conexão com o primário atual não exigirá 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 editor no editor original
Configure a distribuição remota. Se os procedimentos armazenados estiverem a ser usados para configurar o publicador, execute
sp_adddistributor
e especifique o mesmo valor para @password que o usado quandosp_adddistrbutor
foi executado no distribuidor para configurar a distribuição.EXECUTE sys.sp_adddistributor @distributor = 'MyDistributor', @password = 'MyDistPass';
Habilite o banco de dados para replicação. Se os procedimentos armazenados estiverem a ser usados para configurar o publicador, execute
sp_replicationdboption
. Se a replicação transacional e a replicação de mesclagem forem configuradas para o banco de dados, cada uma deverá ser habilitada.USE master; GO EXECUTE sys.sp_replicationdboption @dbname = 'MyDBName', @optname = 'publish', @value = 'true'; EXECUTE sys.sp_replicationdboption @dbname = 'MyDBName', @optname = 'merge publish', @value = 'true';
Crie a publicação de replicação, os artigos e as assinaturas. Para obter mais informações sobre como configurar a replicação, consulte Publicando objetos de dados e banco de dados.
2. Configurar o grupo de disponibilidade
Na 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 inicialmente os bancos de dados de réplica secundária ou poderá executar a inicialização manualmente usando backup e restauração.
Crie um listener DNS para o grupo de disponibilidade que será utilizado pelos agentes de replicação para se conectarem ao primário atual. O nome do ouvinte especificado será usado como destino de redirecionamento para o par de banco de dados publicado/editor original. Por exemplo, se você estiver usando DDL para configurar o grupo de disponibilidade, o exemplo de código a seguir pode 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, consulte criação e configuração de grupos de disponibilidade (SQL Server).
3. Certifique-se de que todos os hosts de réplica secundários estejam configurados para replicação
Em cada host de réplica secundário, verifique se o SQL Server foi configurado para dar suporte à replicação. A consulta a seguir pode ser executada em cada host de réplica secundário para determinar se a replicação está instalada:
USE master;
GO
DECLARE @installed AS INT;
EXECUTE @installed = sys.sp_MS_replication_installed;
SELECT @installed;
Se @installed for igual a 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 atuar como publicador ou republicador de replicação, mas a replicação deve ser configurada para que a réplica secundária possa assumir o controlo após uma transferência de serviço. No distribuidor, configure a distribuição para cada host de réplica secundário. Especifique o mesmo banco de dados de distribuição e diretório de trabalho que foi especificado quando o editor 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 @login e @password foram usados para o editor original, especifique os mesmos valores para cada um quando adicionar os hosts de réplica secundários como editores.
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ário, configure a distribuição. Identifique o distribuidor do editor 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ário, certifique-se de que os assinantes push das publicações de banco de dados apareçam 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 AG
No distribuidor, no banco de dados de distribuição, execute o procedimento armazenado sp_redirect_publisher
para associar o editor original e o banco de dados publicado ao nome do ouvinte do grupo de disponibilidade.
USE distribution;
GO
EXECUTE sys.sp_redirect_publisher
@original_publisher = 'MyPublisher',
@publisher_db = 'MyPublishedDB',
@redirected_publisher = 'MyAGListenerName';
6. Execute o procedimento armazenado de validação de replicação para verificar a configuração
No distribuidor, na base de dados de distribuição, execute o procedimento armazenado sp_validate_replica_hosts_as_publishers
para verificar se todos os servidores de réplicas agora estão configurados para servir como editores para a base de dados publicada.
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 procedimento armazenado sp_validate_replica_hosts_as_publishers
deve ser executado a partir de um login com autorização suficiente no host de réplica de cada 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 autor da chamada e não utiliza o login 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 seguinte erro ao validar hosts de réplica secundária que não permitem acesso de leitura ou exigem que a intenção de leitura seja especificada.
Msg 21899, Nível 11, Estado 1, Procedimento
sp_hadr_verify_subscribers_at_publisher
, Linha 109A consulta no editor redirecionado 'MyReplicaHostName' para determinar se havia entradas sysserver para os assinantes do editor 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 é suspensa ou a réplica de disponibilidade não está habilitada para acesso de leitura. Para permitir acesso somente leitura a este e outros bancos de dados no grupo de disponibilidade, habilite o acesso de leitura a uma ou mais réplicas de disponibilidade secundária no grupo. Para obter mais informações, consulte a instrução ALTER AVAILABILITY GROUP nos Manuais Online do SQL Server.
Um ou mais erros de validação do editor foram encontrados para o host de réplica 'MyReplicaHostName'.
Este é um comportamento esperado. Você deve verificar a presença das entradas do servidor assinante nesses hosts de réplica secundários consultando as entradas sysserver diretamente no host.
7. Adicione o editor original ao Replication Monitor
Em cada réplica do grupo de disponibilidade, adicione o editor original ao Replication Monitor.
Tarefas relacionadas
Replicação
Criar e configurar um grupo de disponibilidade
- Usar o 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)
- Especificar a URL do Endpoint ao Adicionar ou Modificar uma Réplica de Disponibilidade (SQL Server)
- Criar um endpoint de espelhamento de base de dados para Always On Availability Groups (SQL Server PowerShell)
- associar uma réplica secundária a um grupo de disponibilidade (SQL Server)
- Preparar Manualmente um Banco de Dados Secundário para um Grupo de Disponibilidade (SQL Server)
- associar um banco de dados secundário a um grupo de disponibilidade (SQL Server)
- Criar ou configurar um ouvinte de grupo de disponibilidade (SQL Server)