Eu configurei o espelhamento de banco de dados usando o servidor SQL em dois servidores. Tenho o Enterprise Edition no servidor principal e o Standard Edition no servidor secundário.
Para verificar os dados no servidor secundário, quebrei manualmente o espelhamento, para poder inspecionar os dados no espelho. Agora, após o processo de verificação, quero habilitar o espelhamento novamente.
O banco de dados tem mais de 200 GB, portanto, não é possível fazer um backup do primário, enviá-lo pela rede e restaurá-lo no servidor secundário devido à longa distância entre os dois nós e à configuração da rede.
Quais opções estão disponíveis para que eu possa reiniciar o espelhamento?
Depois de quebrar o espelho do banco de dados, você não tem outra opção senão reinicializá-lo usando um backup completo e um backup do log de transações do principal.
Os passos que você deve seguir são:
Restaure um backup de banco de dados completo recente do banco de dados principal, depois de certificar-se de que o banco de dados principal já estava usando o modelo de recuperação completo quando o backup foi feito. O banco de dados espelho deve ter o mesmo nome do banco de dados principal.
Se você tiver feito algum backup diferencial do banco de dados desde o backup completo restaurado, restaure seu backup diferencial mais recente.
Restaure todos os backups de log feitos desde o backup completo ou diferencial do banco de dados.
Conclua as etapas de configuração restantes assim que puder após fazer o backup do banco de dados principal. Antes de iniciar o espelhamento nos parceiros, você deve criar um backup de log atual no banco de dados original e restaurá-lo no futuro banco de dados espelhado.
Estabeleça a sessão de espelhamento usando
ALTER DATABASE <database_name> SET PARTNER =<server_network_address>
primeiro no servidor secundário e depois no servidor principal.Aconselho você a usar o recurso nativo de compactação de backup no SQL Server para compactar o banco de dados e os backups de log (e talvez posteriormente compactá-los com 7-Zip); em seguida, envie os arquivos usando o método de envio noturno mais rápido que puder encontrar. Peça a alguém no local secundário que coloque esses arquivos no servidor secundário em um local mutuamente aceitável, onde você possa restaurá-los posteriormente usando
WITH NORECOVERY
.Provavelmente, o conselho mais importante é entender que não há necessidade de validar os dados no lado secundário, pois o SQL Server confirma os dados no secundário da mesma forma que confirma os dados no primário; ou seja, ele usa metodologias compatíveis com ACID. Dessa forma, você pode ter certeza de que os dados no secundário são uma cópia exata dos dados no primário. A melhor maneira de confirmar se o secundário é uma cópia funcional é fazer o failover da sessão de espelhamento para que o secundário se torne o primário. Você pode fazer isso durante uma janela de manutenção, com os testadores prontos para validar se o sistema funciona conforme o esperado. Claramente, você faria um conjunto completo de backups antes do primeiro failover, apenas no caso de as coisas não funcionarem conforme o esperado.
Tanto quanto eu sei, um banco de dados espelhado precisa ter um backup completo e, em seguida, um backup do log de transações restaurado (com norecovery) para que o espelhamento seja inicializado.
Eu separaria o backup completo do banco de dados em vários arquivos e, em seguida, transportaria pela rede. Se você estiver usando a versão 2008 ou superior, use compactação para obter os arquivos de backup o menor possível. Se você estiver usando o 2005, existem várias ferramentas de terceiros que irão distribuir e compactar um backup. Dê uma olhada online.
Um recurso final seria fazer backup em uma unidade externa e, em seguida, levar fisicamente essa unidade para o outro centro de dados e conectá-la ao servidor secundário (mas isso pode não ser possível para você).