Definição de problema
Nosso servidor de banco de dados precisa ser transferido para outro datacenter. É executado no Microsoft SQL Server 2012 Enterprise (64 bits) e contém dois bancos de dados de cerca de 2 TB e 1 TB.
Ter pouco ou nenhum tempo de inatividade para isso seria o ideal.
Carga de trabalho
Esses bancos de dados são usados para um site .NET e são atualizados constantemente.
Tê-lo indisponível no fim de semana seria aceitável. O banco de dados atualmente em uso permaneceria o único em uso até a mudança para o novo.
Idealmente, essa opção seria feita apenas alterando as entradas DNS para apontar para o novo servidor de banco de dados, garantindo que o banco de dados não esteja sendo atualizado.
Além disso, o tempo gasto por essa operação realmente não importa, desde que a troca de um servidor para outro (tempo de inatividade) seja mantida baixa.
Abordagens consideradas
Backup e restauração
Isso já foi feito no passado, mas envolveu um alto tempo de inatividade, apesar de ter sido feito através de uma rede interna, de forma mais eficiente do que através da Internet
Envio de log
Pelo que entendi, essa abordagem minimizaria o tempo de inatividade, configurando um mestre / escravo e transferindo uma cópia exata do banco de dados mestre para o seu escravo sendo somente leitura. Como mencionado acima, nenhum acesso ao escravo seria necessário e precisamos apenas de uma réplica do banco de dados mestre sem corrupção de dados.
Também parece ser bastante eficiente em termos de utilização de recursos e não afetaria muito o desempenho principal.
Eu posso estar errado sobre essa abordagem, então fique à vontade para me corrigir.
Espelhamento de banco de dados
Não estou muito ciente dessa abordagem, mas parece uma opção válida. Não é necessário ter sincronização em tempo real e o desempenho do mestre é muito importante; portanto, o modo assíncrono seria o caminho a seguir se essa abordagem fosse escolhida.
Outras opções?
Esse servidor é executado diretamente no hardware bare metal, portanto, soluções de nível inferior infelizmente não são uma opção. Talvez haja uma maneira melhor de fazer isso?
Restrições
Conforme descrito, esses bancos de dados são muito grandes a ponto de serem difíceis de manter, mas esse é outro problema.
As versões do SQL Server serão as mesmas (Microsoft SQL Server 2012 Enterprise de 64 bits).
Ele precisará ser transferido pela rede entre dois datacenters, provavelmente pela Internet. Enviar discos de um site para outro para uma sincronização inicial infelizmente não é uma opção. Ter algum tipo de segurança para a transferência seria ideal, mas faremos o melhor possível nessa situação.
Isso deve fornecer uma boa visão geral de nossas necessidades para esta tarefa e, esperamos, que alguns de vocês já tenham enfrentado essa situação antes.