Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
O espelhamento de banco de dados pode ser usado em conjunto com a replicação para melhorar a disponibilidade do banco de dados de publicação. O espelhamento do banco de dados compreende duas cópias de um único banco de dados que geralmente reside em computadores diferentes. Em determinado momento, apenas uma cópia do banco de dados está atualmente disponível aos clientes. Essa cópia é conhecida como o banco de dados principal. As atualizações realizadas pelos clientes no banco de dados principal são aplicadas à outra cópia do banco de dados, conhecida como banco de dados espelho. O espelhamento envolve a aplicação do log de transações de cada inserção, atualização ou exclusão efetuada no banco de dados principal, para o banco de dados espelho.
O failover de replicação para um banco de dados espelho é totalmente compatível com bancos de dados de publicação, com suporte limitado para bancos de dados de assinatura. O espelhamento de banco de dados não é compatível com o banco de dados de distribuição. Para obter informações sobre como recuperar um banco de dados de distribuição ou banco de dados de assinatura sem precisar reconfigurar a replicação, veja Fazer backup e restaurar bancos de dados replicados.
Observação
Após um failover, o espelho se torna o principal. Nesse tópico, "principal" e "espelho" sempre se referem ao principal original e ao espelho.
Exigências e considerações no uso de replicação com espelhamento do banco de dados
Esteja atento quanto às exigências e às considerações a seguir, quando for usar a replicação com o espelhamento do banco de dados:
O principal e o espelho devem ter o mesmo Distribuidor. Recomendamos que esse seja um Distribuidor remoto que ofereça tolerância maior a falhas, caso o Publicador tenha um failover não programado.
A replicação oferece suporte ao espelhamento do banco de dados publicado para replicação de mesclagem e para replicação transacional com Assinantes somente para leitura ou Assinantes com atualização em fila. Não há suporte a Assinantes com atualização imediata, Publicadores Oracle, Publicadores em topologia ponto a ponto e republicação.
Os metadados e os objetos que existem fora do banco de dados não são copiados para o espelho, inclusive logons, trabalhos, servidores vinculados, etc. Se precisar dos metadados e dos objetos no espelho, você deverá copiá-los manualmente. Para obter mais informações, confira Administração de logons e trabalhos após a troca de funções (SQL Server).
Configurando a replicação usando espelhamento de banco de dados
A configuração da replicação e do espelhamento do banco de dados compreende cinco etapas. Cada etapa está descrita com mais detalhes na próxima seção.
Configurar o Publisher.
Configure o espelhamento do banco de dados.
Configure o espelho para usar o mesmo Distribuidor que o principal.
Configurar os agentes de replicação para failover.
Adicione o servidor principal e o servidor espelho ao Replication Monitor.
As Etapas 1 e 2 podem ser realizadas também em ordem oposta.
Para configurar o espelhamento de banco de dados para um banco de dados de publicação
Configure o Publicador:
Recomendamos o uso de um Distribuidor remoto. Para obter mais informações sobre como configurar a distribuição, veja Configurar a distribuição.
Você pode habilitar um banco de dados para instantâneos e publicações transacionais e/ou publicações de mesclagem. Para bancos de dados espelhados que conterão mais de um tipo de publicação, é necessário habilitar o banco de dados para ambos os tipos no mesmo nó usando sp_replicationdboption. Por exemplo, você pode executar as seguintes chamadas de procedimento armazenado na instância principal:
exec sp_replicationdboption @dbname='<PublicationDatabase>', @optname='publish', @value=true; exec sp_replicationdboption @dbname='<PublicationDatabase>', @optname='mergepublish', @value=true;Para obter mais informações sobre como criar publicações, veja Publicar dados e objetos de banco de dados.
Configure o espelhamento de banco de dados Para obter mais informações, veja Estabelecer uma sessão de espelhamento de banco de dados usando a Autenticação do Windows (SQL Server Management Studio) e Configurando o espelhamento de banco de dados (SQL Server).
Configure a distribuição para o espelho. Especifique o nome do espelho como o Publicador e especifique o mesmo Distribuidor e a pasta de instantâneos usados pelo servidor principal. Por exemplo, caso esteja configurando a replicação com procedimentos armazenados, execute sp_adddistpublisher no Distribuidor e execute sp_adddistributor no espelho. Para sp_adddistpublisher:
Defina o valor do parâmetro @publisher para o nome de rede do espelho.
Defina o valor do parâmetro @working_directory para a pasta de instantâneos usada pelo principal.
Especifique o nome do espelho para o parâmetro de agente -PublisherFailoverPartner. Agente Este parâmetro é necessário para que os seguintes agentes identifiquem o espelho após o failover:
Agente de Instantâneo (para todas as publicações)
Log Reader Agent (para todas as publicações transacionais)
Queue Reader Agent (para publicações transacionais que dão suporte às assinaturas de atualização em fila).
Agente de Mesclagem (para assinaturas de mesclagem)
Ouvinte de replicação do SQL Server (replisapi.dll: para assinaturas de mesclagem sincronizadas usando a sincronização via Web)
SQL Merge ActiveX Control (para assinaturas de mesclagem sincronizadas com o controle)
O Agente de Distribuição e o Distribution ActiveX Control não têm esse parâmetro porque não se conectam ao Publicador.
As alterações nos parâmetros do agente entrarão em vigor na próxima vez que o agente for iniciado. Se o agente continuar em execução, você deve parar e reiniciar o agente. Os parâmetros podem ser especificados em perfis de agente e por meio do prompt de comando. Para obter mais informações, consulte:
Recomendamos adicionar o -PublisherFailoverPartner ao perfil de um agente e, em seguida, especificar o nome do espelho no perfil. Por exemplo, se você estiver configurando uma replicação com procedimentos armazenados:
-- Execute sp_help_agent_profile in the context of the distribution database to get the list of profiles. -- Select the profile id of the profile that needs to be updated from the result set. -- In the agent_type column returned by sp_help_agent_profile: -- 1 = Snapshot Agent; 2 = Log Reader Agent; 3 = Distribution Agent; 4 = Merge Agent; 9 = Queue Reader Agent. exec sp_help_agent_profile; -- Setting the -PublisherFailoverPartner parameter in the default Snapshot Agent profile (profile 1). -- Execute sp_add_agent_parameter in the context of the distribution database. exec sp_add_agent_parameter @profile_id = 1, @parameter_name = N'-PublisherFailoverPartner', @parameter_value = N'<Failover Partner Name>'; -- Setting the -PublisherFailoverPartner parameter in the default Merge Agent profile (profile 6). -- Execute sp_add_agent_parameter in the context of the distribution database. exec sp_add_agent_parameter @profile_id = 6, @parameter_name = N'-PublisherFailoverPartner', @parameter_value = N'<Failover Partner Name>';Adicione o servidor principal e o servidor espelho ao Replication Monitor. Para obter mais informações, veja Adicionar e remover Publicadores do Replication Monitor.
Mantendo um banco de dados de publicação espelhado
Manter um banco de dados de publicação espelhado é praticamente o mesmo que manter um banco de dados não espelhado, com as considerações a seguir:
A administração e o monitoramento devem ocorrer no servidor ativo. No SQL Server Management Studio, as publicações aparecem sob a pasta Publicações Locais , somente para o servidor ativo. Por exemplo, se você fizer failover para o espelho, as publicações serão exibidas no espelho e deixarão de ser exibidas no principal. Se ocorrer um failover de banco de dados no espelho, talvez seja necessário atualizar manualmente o Management Studio e o Replication Monitor, para que a alteração seja refletida.
O Monitor de Replicação exibe os nós do Publicador na árvore de objetos tanto para o principal quanto para o espelho. Quando o principal é o servidor ativo, as informações de publicação são exibidas somente no nó principal no Replication Monitor.
Se o espelho for o servidor ativo:
Se um agente apresentar um erro, o erro será indicado somente no nó principal, não no nó espelho.
Se o principal estiver indisponível, os nós principal e espelho exibem listas idênticas de publicações. O monitoramento deve ser realizado nas publicações sob o nó espelho.
Ao usar procedimentos armazenados ou Replication Management Objects (RMO) para administrar a replicação no servidor espelho, nos casos em que o nome do Publisher for especificado, você deverá especificar o nome da instância na qual o banco de dados foi habilitado para replicação. Para determinar o nome apropriado, use a função publishingservername.
Quando um banco de dados de publicação é espelhado, os metadados de replicação armazenados no banco de dados espelhado são idênticos aos metadados armazenados no banco de dados principal. Portanto, para os bancos de dados de publicação habilitados para replicação na instância principal, o nome da instância do Publicador armazenado nas tabelas de sistema do espelho será o da instância principal, não o do espelho. Isso afeta a configuração e a manutenção da replicação se o banco de dados de publicação fizer failover para o servidor espelho. Por exemplo, se você estiver configurando a replicação com procedimentos armazenados no espelho após um failover e quiser adicionar uma assinatura pull a um banco de dados de publicação que foi habilitado no servidor principal, será necessário especificar o nome do principal, em vez do nome do espelho, para o parâmetro @publisher de sp_addpullsubscription ou sp_addmergepullsubscription.
Se você habilitar um banco de dados de publicação no servidor espelho após o failover para o espelho, o nome da instância do Publicador armazenado nas tabelas de sistema será o nome do espelho; nesse caso, você usará o nome do espelho no parâmetro @publisher.
Observação
Em alguns casos, como sp_addpublication, o parâmetro @publisher tem suporte apenas nos Publicadores não SQL Server; nesses casos, ele não é relevante para o espelhamento do banco de dados de SQL Server.
Para sincronizar uma assinatura no Management Studio após um failover: sincronize as assinaturas pull a partir do Assinante e as assinaturas push a partir do Publicador ativo.
Comportamento da replicação se o espelhamento for removido
Considere as questões a seguir se o espelhamento do banco de dados for removido de um banco de dados publicado:
Se o banco de dados de publicação do principal não estiver mais espelhado, a replicação continuará funcionando sem alterações no principal original.
Se ocorrer um failover de banco de dados de publicação do principal para o espelho, e a relação de espelhamento for subsequentemente desabilitada ou removida, os agentes de replicação não funcionarão com o espelho. Se o principal estiver permanentemente perdido, desabilite e, em seguida, reconfigure a replicação com o espelho especificado como Publicador.
Se o espelhamento do banco de dados for completamente removido, o banco de dados espelho estará em um estado de recuperação e deverá ser restaurado para tornar-se funcional. O comportamento do banco de dados recuperado com relação à replicação depende da especificação da opção KEEP_REPLICATION. Essa opção força a operação de restauração para preservar as configurações da replicação, quando for restaurar um banco de dados publicado em um servidor que não seja naquele em que o backup foi criado. Use a opção KEEP_REPLICATION somente quando o outro banco de dados de publicação estiver indisponível. A opção não é compatível se o outro banco de dados de publicação ainda estiver intacto e em replicação. Para obter mais informações sobre KEEP_REPLICATION, consulte RESTORE (Transact-SQL).
Comportamento do Log Reader Agent
A tabela a seguir descreve o comportamento do Log Reader Agent nos vários modos operacionais do espelhamento do banco de dados.
| Modo de operação | Comportamento do Log Reader Agent se o espelho estiver indisponível |
|---|---|
| Modo de alta segurança com failover automático | Se o espelho estiver indisponível, o Log Reader Agent propagará os comandos no banco de dados de distribuição. O principal não pode executar o failover para o espelho até que o espelho volte a ficar on-line e tenha todas as transações do principal. |
| Modo de alto desempenho | Se o espelho estiver indisponível, o banco de dados principal estará em execução exposto (isto é, sem-espelho). No entanto, o Log Reader Agent replica apenas as transações que são confirmadas no servidor espelho. Caso o failover de serviço seja forçado e o servidor espelho assuma a função de principal, o Log Reader Agent passará a operar no servidor espelho e começará a capturar as novas transações. Fique ciente de que a latência de replicação aumentará, se o espelho ficar atrás do principal. |
| Modo de alta segurança sem failover automático | Todas as transações confirmadas têm garantia de serem gravadas de forma persistente no disco no espelho. O Log Reader Agent replica somente as transações que foram confirmadas no espelho. Se o espelho estiver indisponível, o principal proíbe qualquer atividade adicional no banco de dados; portanto, o Log Reader Agent não terá nenhuma transação a ser replicada. |
Consulte Também
Replicação do SQL Server
Replicação e envio de logs (SQL Server)