Ainda estou lutando para entender as tarefas de backup do SQL.
Atualmente, temos uma instância do SQL Server 2005 usando o modelo de recuperação FULL.
Fazemos um backup completo do banco de dados toda semana.
BACKUP DATABASE [MyDatabase]
TO DISK = N'E:\Database Backups\MyDatabase.Bak'
WITH INIT, NAME = N'MyDatabase.Bak'
E um backup diferencial uma vez ao dia
BACKUP DATABASE [MyDatabase]
TO DISK = N'E:\Database Backups\MyDatabase_Diff.Bak'
WITH INIT, DIFFERENTIAL, NAME = N'MyDatabase_Diff.Bak'
Agora estou tentando descobrir como agendar backups de log de transações a cada hora, então, no máximo, perderíamos uma hora de trabalho.
BACKUP LOG [MyDatabase]
TO DISK = N'E:\Database Backups\MyDatabase_Log.Bak'
Meu problema é que nosso espaço de armazenamento é limitado e não quero que o arquivo de log fique muito grande. Posso usar WITH INIT
no backup do log de transações para forçá-lo a criar um novo arquivo a cada hora? Ou preciso de todos os backups do log de transações desde o último backup diferencial para restaurar em um ponto específico no tempo durante o dia?
E se eu precisar manter todas as cópias desde o último diferencial, existe uma maneira de dizer para redefinir sempre que eu fizer um backup?
Não, não use
WITH INIT
para backups de log de transações no mesmo arquivo. Se você fizer isso, você também não pode levá-los entre backups completos/diferenciados.Normalmente, você fará backup do log em um arquivo exclusivo a cada vez. Cada um terá alguma forma de registro de data e hora no nome e uma extensão .trn em vez de .bak. Isso é principalmente para fins de gerenciamento - torna muito fácil identificar quando um backup de log foi feito, quando é seguro excluí-lo, se deve fazer parte de sua operação de recuperação pontual etc.
Obrigado por publicar.
Se seus logs de transação estiverem em uma matriz de disco diferente do seu arquivo de dados, execute um ' backup final do log' em caso de falha na matriz de dados. Isso garantiria uma perda mínima de dados para que você nem perdesse aquela hora.
Não, quanto à sua próxima pergunta, você precisará de todos os backups de log de transações após o último backup diff para fazer qualquer recuperação 'point in time'. Não os sobrescreva, guarde todos, ou serão inúteis.
Você pode querer verificar um dos scripts de backup/manutenção mais recomendados por SQL MVPs por OlaHallgren , que executam muitos tratamentos de erros e otimizações para você. Você desejará especificar um novo nome de arquivo para cada backup de log de transação se não quiser 1 arquivo grande para poder restaurá-los todos quando necessário.
Em caso de emergência, confira esta postagem sobre como gerar os scripts de restauração, mas VERIFIQUE SE VOCÊ NÃO OS ESTÁ EXECUANDO NO PROD SE VOCÊ NÃO QUISER. IRÁ SUBSTITUIR SEUS BANCOS DE DADOS. Teste-os primeiro em um servidor diferente.