Eu tenho um banco de dados SQL de 2,8 TB (principalmente arquivos de dados, cerca de 400 GB de arquivos de log) que atualmente leva cerca de 9 horas para restaurar. Esse banco de dados é usado para fins de teste e deve ser excluído e restaurado de um backup entre cada execução, para garantir que sempre partamos do mesmo ponto.
Minha pergunta é, o servidor atualmente possui 12 núcleos e 92 GB de RAM, com um subsistema de disco RAID 5 no qual o banco de dados está. Quais áreas geralmente causam gargalos nos processos de restauração do SQL? É o disco, memória ou CPU?
Não faça backup e restauração; usar instantâneos do SQL Server. É preciso muito espaço em disco para armazenar um arquivo esparso do mesmo tamanho dos arquivos que você capturou, mas a reversão é centenas de vezes mais rápida.
Eles estão disponíveis nas edições SQL Server Enterprise e SQL Server Developer.
Seu principal gargalo em uma restauração será o disco IO. Para corrigir isso, você basicamente precisa de discos mais rápidos ou de uma configuração diferente. Eu não sei o suficiente sobre RAID ou SANs para sugerir qualquer coisa lá. Você pode até considerar SSDs. Eles são incrivelmente rápidos. Eu não gostaria de usá-los em algo que não é recriado regularmente (tempdb é sempre um bom candidato para isso), mas como você o restaura com frequência, pode ser bom. Por outro lado, você provavelmente deseja certificar-se de que seu servidor de teste esteja o mais próximo possível do servidor de produção se estiver fazendo testes de desempenho.
Há algumas outras coisas que você pode fazer para se ajudar. Primeiro comprima seus backups, se ainda não o fez. Isso obviamente pressupõe o SQL 2008 ou superior. Isso reduzirá não apenas o espaço em disco para armazenar o backup, mas também o IO para lê-lo. Há um custo de CPU envolvido, portanto, esteja ciente. Também não exclua seu banco de dados, apenas restaure-o. Dessa forma, os arquivos já estão no lugar e não há sobrecarga para criá-los. Você pode ativar a inicialização instantânea do arquivo (é uma permissão no nível do servidor) para acelerar drasticamente a criação/crescimento do arquivo para o seu arquivo de dados, mas não funcionará para o seu arquivo de log.