Como gerar um backup sem impactar na estratégia de recuperação (SQL Server)

Fala pessoal, tudo bem? Em algumas situações o DBA pode precisar gerar um backup "fora de hora" para um fim específico. Tecnicamente é muito simples, basta executar o processo de backup e gerar o arquivo, porém isso pode impactar grandemente a estratégia de restore dos arquivos.


Explicando brevemente sobre a sequência de arquivos. Cada backup full inicia uma sequência de backups, após ele você pode gerar backups diferenciais e de log transacional (que serão controlados por uma sequência de geração). Essa sequência é importantíssima pois em uma eventual necessidade de recuperar o banco, você precisa restaurar o último backup full e os demais arquivos (diff e log) na mesma sequência em que eles foram gerados. Um novo backup full inicia um novo ciclo e por aí vai. (Diferenciais e log dependem do último full gerado antes deles, grave isso que vai ser importante)

Para entender mais detalhadamente sobre esse assunto você pode ver o post que fiz clicando aqui.


Quando alguém gera um backup full manualmente esse backup gerado pode quebrar toda essa sequência. Um processo comum que existe é a cópia (armazenamento em outro local) dos backups gerados pela política estabelecida (full, diff e log), esse arquivo gerado fora da política provavelmente não vai entrar nesse processo de cópia pois esta totalmente fora do padrão da política, é aí que mora o perigo, lembra que os diff e logs dependem do último full? Imagine a seguinte situação:

A política de backup da empresa Garcia Ltda segue a seguinte programação

- Backup full aos domingos 0h00

- Backups diferenciais de segunda a sábado 0h00

- Backups de log transacional todos os dias a cada 1 hora iniciando 1h00 e finalizando as 23h00


Alguém gerou um backup full manualmente na segunda-feira as 10h30 (nesse momento todos os logs e diffs passaram a depender desse full e não mais do de domingo que já foi armazenado em algum lugar).

Na sexta-feira da mesma semana as 14h30 o servidor de banco para de funcionar e o DBA precisa restaurar o banco com o mínimo de perda, no processo dele vai pegar os arquivos gerados e armazenados fora do servidor e o que ele tem?

Exatamente, o full do domingo, o diff da sexta e todos os logs da sexta. O full restaura normal, quando vai pro diff não sobe, porque esse diff e os demais logs precisam daquele full que foi gerado por alguém na segunda (depende sempre do último full). Como esse da segunda não foi copiado toda a estratégia foi para o lixo e o cliente perdeu quase uma semana de dados.


Ok, entendi o problema, mas o que eu posso fazer então se preciso de um backup pontual?

Eu sempre uso duas alternativas:

1) Se possível gero um backup diferencial e coloco na pasta que é feita a cópia (o Diff é pequeno geralmente e não impacta na sequência dos logs). Entrego para quem solicitou o ultimo full que já foi gerado em algum momento + o diff que acabei de gerar.


2) Gerar um backup copy only do banco. Esse é um backup do SQL Server que não interfere na sequência de backups convencionais, assim você não gera nenhum ponto de falha da política de restore.

Para realizar um copy only é muito simples, basta adicionar a clausula (se fizer via script) ou selecionar um parâmetro (se for por tela).


Script:

Tela:


Como DBA você precisa garantir que os planos de backup e restore estejam íntegros e quando necessário usá-los, tudo tem que funcionar como planejado.


Gostou do post? Deixe o seu comentário!


Nos acompanhe em nossas redes sociais!

Grupo VIP Telegram: DBA On boarding

Youtube(vídeos novos todas as quartas): DBA On boarding

Face & Instagram(conteúdo diário): DBA On boarding


Até a próxima, tchau!


98 visualizações0 comentário