Preciso fazer backup de 10 a 20 bancos de dados do SQL Server 2008 R2 com tamanhos entre 10 e 50 GB, enquanto eles estão online e usados simultaneamente por um único aplicativo corporativo. Também preciso restaurá-los para um estado que seja amplamente sincronizado em todos os bancos de dados (posso pagar alguns segundos de dessincronização entre os bancos de dados). O objetivo é capturar dados de produção para ambientes QA/DEV.
Eu gostaria fortemente de não exigir que os bancos de dados sejam executados em recuperação total e criar um método de backup dedicado à captura de dados para ambientes de controle de qualidade e que permaneça independente de um processo principal de backup que não esteja sob meu controle.
Para meus clientes, levará de 1 a 2 horas para capturar 20 backups completos de aproximadamente 30 GB cada. Isso torna inaceitável fazer backups completos sequencialmente, pois os bancos de dados ficariam muito dessincronizados ao serem executados na recuperação simples.
Estou procurando uma ideia melhor do que estas:
IDEIA 1: Snapshot no nível SAN de discos VM. xcopy MDFs/LDFs do instantâneo.
Depois que os arquivos copiados são anexados a uma instância de servidor diferente, seu processo de recuperação deve produzir bancos de dados consistentes que são instantâneos praticamente simultaneamente.
Pesquisar no Google me convenceu de que essa é uma má ideia, pelo menos porque posso obter desync vs. master/msdb/etc.
IDEIA 2: Orquestre um backup complexo e uma restauração sincronizada em todos os bancos de dados
Isso exige que bancos de dados exigentes sejam executados em recuperação total, o que eu não quero. Inicie backups paralelos para todos os bancos de dados bem antes do prazo (T0). Quando T0 for atingido, faça backup de todos os logs (deve levar no máximo alguns minutos). Pegue a miríade resultante de backups e tente restaurá-los e rolar os logs para frente/para trás para obter um estado um tanto consistente nos bancos de dados, em relação a T0.
Isso requer muito planejamento e scripts para que seja usado de forma confiável, então eu faria de tudo para evitá-lo.
Estou perdendo alguma outra solução?
PS1: Eu adoraria poder usar snapshots db . A ideia era iniciar um instantâneo em cada banco de dados (que deve terminar em segundos) e, em seguida, fazer backup completo de cada um sequencialmente nos minutos/horas seguintes. Em seguida, restaure todos eles em um servidor diferente e reverta cada um para o instantâneo. AFAIK este cenário não é possível porque os instantâneos não podem ser copiados junto com o banco de dados. Eles só podem ser revertidos no local, no servidor onde foram criados. Além disso, eles exigem a Enterprise Edition, que não tenho para todos os clientes.
PS2: Se você souber de uma solução de terceiros capaz de produzir backups sincronizados entre bancos de dados, mencione-a.