Restore

Fala aee pessoal, espero que estejam todos ótimos !!

Finalizando os posts sobre backups, falaremos agora sobre  o restore!


Entendo um pouco do Restore

No post passado realizamos, e entendemos os tipos de backup. Pois bem, vamos agora falar sobre a restauração dos backups.

Considerando que temos os seguintes arquivos de backup:

Backup full realizado 01:00 da manhã.

Backup diferencial realizado a cada 03 horas.

Backup do log realizado a cada 10 minutos.

Imaginemos que aconteceu uma corrupção da base às 03:23 da manhã, como faremos para restaurar nossa base até o momento mais recente antes da corrupção?

O primeiro passo é entender que todo restore se inicia com o backup full. Neste caso primeiramente vamos restaurar o backup full.

Em seguida, considerando o cenário temos os seguintes backups:

Diferencial 01:30 –  02:00 – 02:30 – 03:00

Neste caso, iremos restaurar o backup diferencial das 03:00 da manhã.

Curiosidade: No post sobre backups comentamos que o backup diferencial funciona a partir do backup full. https://ithalobruno.tech/?p=99 ou seja, o backup diferencial de 03:00, possui todas as transações de 01:00 (hora do último full) até 03:00.

Percebam, que não foi necessário restaurar os outros diferenciais.

Por fim, agora basta que restauremos o backup do log de 03:20 certo? Errado :’(

Errado, pois temos neste momento o backup full + backup diferencial de 03:00, portanto temos os dados até 03:00, e, ao restaurarmos o backup do log de 03:20, as transações realizadas de 03:00 até 03:10 serão perdidas. Para resolver este problema, temos que restaurar o backup do log de 03:10 e 03:20. Diferentemente do backup diferencial, o backup do log precisa de todos os outros backups do log, para aquele momento em que você deseja restaurar.

Então nosso restore se dará da seguinte maneira:

1 – Restore do backup full de 01:00

2 – Restore do backup diferencial de 03:00

3 – Restore do backup do log de 03:10

4 – Restore do backup do log de 03:20

Observação: Poderíamos restaurar a base usando todos os backups dos logs sem usar o diferencial. Porém, a quantidade de restore seria bem maior.

Para ficar bem claro como funciona a estratégia de restore.

Tudo se inicia com o backup full, sem esse backup fuja para as colinas.

A partir do full podemos avaliar o cenário, e tentar abordar a melhor maneira de restaurar, lembrando que o backup diferencial irá trazer todos os dados a partir do full, e o backup do log trará os dados sempre a partir do backup do log anterior, com exceção do primeiro backup do log, que irá gravar todas as transações a partir do backup full, pois se trata do primeiro backup do log.


Vamos praticar!

Bom, agora vamos colocar a mão na massa.

Existem duas opções para um restore, 1 – Substituindo a base existente 2 – Criando uma nova base a partir de um backup.

Como estamos tratando de uma corrupção, não justifica ter duas bases em nosso ambiente, sendo uma base corrompida e a outra funcionando normalmente, portanto iremos substituir uma base já existente:

RESTORE DATABASE Estudos -- qual base iremos restaurar
FROM DISK = 'D:\Backups\Estudos_Dados.bak' --- caminho fisico do arquivo de backup
WITH NORECOVERY, REPLACE  -- O comando with norecovery deixará sua base offline, isso se deve pois iremos restaurar outros bkps
-- o comando replace irá substituir a base existente

Beleza, agora já temos o backup full de 01:00 restaurado, vamos restaurar o backup diferencial de 03:00

RESTORE DATABASE Estudos
FROM disk = 'D:\Backups\Estudos_Dados_diff.bak'
WITH NORECOVERY, REPLACE

Percebam, que a sintaxe é a mesma, só alteramos o arquivo do backup.

Agora executaremos o restore do backup do log feito às 03:10.

RESTORE LOG Estudos
FROM DISK = 'D:\Backups\Estudos_Dados_Log_1.bak'
WITH NORECOVERY

Por fim executaremos o backup do log feito às 03:20

RESTORE LOG Estudos
FROM DISK = 'D:\Backups\Estudos_Dados_Log_2.bak'
WITH RECOVERY

Neste último restore, alteramos o NORECOVERY, para RECOVERY, pois terminamos de restaurar nossa base, e nesse momento ela estará disponível para uso novamente.

Espero que tenham gostado.

Um abraço!!

E até a próxima!!!

1 comentário

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *