Gostaria de solicitar aconselhamento especializado sobre agendamento de manutenção e trabalhos de backup. Abaixo estava o cenário antes da minha alteração:
- Backup completo do banco de dados programado para ser executado às 12h30 todos os dias.
- Backup Diferencial programado para ser executado a cada 2 horas no horário comercial (8h às 18h) e a cada 6 horas fora do horário comercial.
- O backup de log está programado para ser executado a cada 15 minutos, conforme o envio de log é configurado.
- Trabalho de otimização de índice (usando script do Grande Sr. Ola Hallengren) executado todos os domingos de manhã às 1h45.
Costumávamos enfrentar problemas de espaço no disco de armazenamento no cenário acima, pois o backup completo era executado antes do trabalho de manutenção e, portanto, o backup diferencial subsequente estava ficando cada vez maior até que o próximo backup completo fosse executado. Isso me levou a executar o backup completo após o trabalho de manutenção e também verifiquei o nível de fragmentação no meio da semana e com base nos valores decidi executar o trabalho de manutenção duas vezes por semana, abaixo está o plano modificado:
- Backup completo do banco de dados programado para ser executado às 12h30 em todos os dias, exceto no domingo e na terça-feira, quando o trabalho de manutenção está programado. No domingo e na terça-feira, o backup completo é feito às 2h30.
- Backup Diferencial programado para ser executado a cada 2 horas no horário comercial (8h às 18h) e a cada 6 horas fora do horário comercial - Sem alteração.
- O backup de log está programado para ser executado a cada 15 minutos, pois o envio de log está configurado - Nenhuma alteração
- Trabalho de otimização de índice (usando script do Grande Sr. Ola Hallengren) sendo executado todos os domingos e terças de manhã às 1h45.
O problema que estou enfrentando agora é o tamanho do backup de log imediatamente após o trabalho de manutenção, o backup de log é muito maior que o backup completo do próprio banco de dados. Escusado será dizer que os backups de log são transferidos para o site secundário, que é então carregado lá para fins de sincronização. Isso levou mais tempo do que o esperado e entre o alerta de envio de logs é acionado, pois o primário e o secundário não estão sincronizados. Anteriormente também, o backup de log era maior, mas costumava ser muito menor que o backup completo e estava demorando consideravelmente menos tempo na transferência do servidor primário para o secundário.
Não tenho certeza se este é um cenário válido em que as alterações (inserir/atualizar/excluir) foram tão volumosas nos últimos 3 dias que o trabalho de manutenção criou um arquivo de log maior que o backup completo e se estabilizaria gradualmente ou eu deveria agendar dois backup completo no domingo e na terça-feira (quando o trabalho de manutenção está em execução) - Um às 12h30 e outro após o trabalho de manutenção.
Aprecie seu conselho gentil.
De acordo com as tarefas de manutenção programada e a segunda estratégia de backup, aqui está minha sugestão que pode atender às suas necessidades de reduzir o backup do log de transações. Como você disse no comentário, “O Log-Shipping está habilitado para os bancos de dados. O recurso Log-Shipping suporta o modelo de recuperação FULL e BULK_LOGGED.
Então
A primeira coisa que você pode fazer se quiser continuar com o modelo de recuperação COMPLETO.
Você pode adicionar duas etapas no trabalho de manutenção programada:
Prós: reduzirá o tamanho do backup do log de truncamento. Contras: A recuperação pontual não será possível durante a duração.
2ª coisa que você pode fazer se for adequado ao seu SLA (RTO e RPO), pois você está fazendo backup do log de transações a cada 15 minutos, “altere o modelo de recuperação para BULK_LOGGED.
3ª ação que você pode executar para encontrar todos os índices não utilizados e removê-los, isso ajudará a reduzir o tamanho do backup do T-Log e a duração da manutenção também. Você pode usar este script para encontrar detalhes do índice.
4º você precisa verificar se está usando FILLFACTOR apropriado para índices. Menos FILLFACTOR significa mais número de páginas. Portanto, escolha FILLFACTOR de acordo com o uso da tabela.
Obrigado!
Além do acima, você pode agendar para que seus backups de log não sejam executados durante a manutenção do índice e reagendar seu total para execução após o trabalho de manutenção. Você precisará configurar um log de backup como nulo também para executar durante o trabalho de manutenção. O backup completo pegará todas as alterações, mas somente se você limpar o log durante o processo. Caso contrário, o full será executado e você terá outro backup de log grande para lidar. Eu faço algo semelhante para grandes cargas ETL.
A manutenção do índice cria muitos logs de log de transações. Outra coisa que você pode fazer é executar a manutenção diariamente. Isso resultará em backups de log menores.
Eu lidei com os mesmos problemas anos atrás e mudar para a manutenção diária ajudou. Em vez de um processo semanal de 3 a 6 horas, tornou-se um processo diário de 15 a 30 minutos.