O gráfico abaixo vem de uma ferramenta de monitoramento. A métrica mostrada é "espaço de log usado" para SQL Server 2016 nos últimos 7 dias.
Estou procurando ajuda para entender o que está acontecendo aqui.
O que eu sei é que o departamento de TI está usando uma ferramenta de terceiros (Veeam) para "fazer backup" regularmente. Sou avisado que backups completos são realizados todas as noites e backups de log são executados a cada 15 minutos (mas não tenho certeza se são backups de imagem de disco dos arquivos de banco de dados ou comandos emitidos para SQLServer pela Veeam para realizar um backup). Uma das etapas inclui "logs de processo" para SQL Server e acredito que uma das etapas seja truncar os logs.
Entendo que truncar o log significa marcar como inativas as partes do arquivo de log que podem ser reutilizadas. No momento, entendo (com ou sem razão) que uma parte do arquivo de log pode ser reutilizada se o SQL Server souber que foi gravada em disco - ou seja, via backup.
O que vejo neste gráfico é
- Um uso anormalmente alto do arquivo de log para um banco de dados na extrema esquerda - ignore isso.
- Crescimento diário e, em seguida, limpeza diária de cada arquivo de log (3 corcovas).
- Crescimento ao longo de 3 dias (sex, sáb, dom), depois truncamento.
Minha interpretação aqui é que os backups de log devem estar ocorrendo, caso contrário, o uso não cairia perto de zero.
Suspeito que os backups de log estejam ocorrendo apenas uma vez por dia - embora não ache que este gráfico prove isso. Por exemplo, existe a possibilidade de haver backups de log mais frequentes durante o horário comercial, mas o truncamento não ocorre nesse momento devido a uma transação de longa execução. No entanto, no backup noturno da Veeam, o comando de truncamento é emitido e é bem-sucedido. Apesar dessa possibilidade, ainda acho mais provável que os backups de log estejam sendo realizados apenas uma vez por dia pela Veeam.
Parte do problema aqui é que a Veeam é uma caixa preta para mim - não tenho certeza de como a TI configurou isso. Também não estou claro se ele está tirando imagens instantâneas dos discos rígidos (ou seja, arquivos de banco de dados) ou instruindo o SQLServer a executar um backup.
Meu objetivo é garantir que estamos fazendo backups frequentes de arquivos de log (e trabalhar com uma boa frequência) para oferecer suporte a um modelo de recuperação completo em essencialmente todos esses bancos de dados. Se eu determinar que atualmente não estamos fazendo backups de log com mais frequência do que todas as noites, também preciso garantir que, se eu implementar medidas para backups de log frequentes, não estarei competindo com a Veeam de tal forma que a Veeam e qualquer tarefa agendada dentro O SQLServer não está quebrando as cadeias de log um para o outro - quaisquer sugestões sobre como verificar e planejar essas coisas seriam muito apreciadas.
Você pode verificar seu histórico de backup usando um relatório padrão:
... usando alguns scripts: Script para recuperar o histórico de backup do banco de dados SQL Server e nenhum backup
... ou dando uma olhada no arquivo ERRORLOG do seu servidor e procurando por Source = Backup