Definição de problema
Nosso servidor de banco de dados precisa ser transferido para outro datacenter. Ele é 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 constantemente atualizados.
Não estar disponí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 troca seria feita apenas alterando as entradas de DNS para apontar para o novo servidor de banco de dados, certificando-se de 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, embora fosse feito por meio de uma rede interna, de forma mais eficiente do que pela Internet
Envio de logs
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 seu escravo sendo somente leitura. Como mencionado acima, nenhum acesso ao escravo seria necessário e só precisamos de uma maneira de ter 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 do mestre.
Posso estar errado sobre essa abordagem, então sinta-se à 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 há necessidade de sincronização em tempo real e o desempenho do mestre é muito importante, portanto, assíncrono seria o caminho a seguir se essa abordagem fosse escolhida.
Outras opções?
Esse servidor é executado diretamente em 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 64 bits).
Ele terá que ser transferido pela rede entre dois datacenters, portanto, provavelmente pela Internet. Ter discos enviados 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 o ideal, mas faremos o melhor nesta situação.
Isso deve dar 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.