Automatizando Teste de Restore - Implementação

Fala galera, tudo certo? Hoje vamos dar continuidade ao assunto do final de semana passado, o DRS. E hoje você já vai colocar ele para funcionar aí no seu lab. Quem caiu direto nessa postagem, corre que ainda dá tempo de ver a postagem do final de semana passado e entender um pouco mais o que irá acontecer por aqui. Caso queira passar por lá depois, agora iremos iniciar a implementação de uma ferramenta que estou desenvolvendo para automatizar o RESTORE DATABASE no SQL Server. Para implementação, irá precisar de duas instâncias SQL Server, uma simulando o ambiente de PRODUÇÃO, e outra o ambiente de teste, dev, homologação... Só que pelo amor do tio Bill, não vai fazer isso no seu cliente agora, vamos entender como funciona primeiro. A primeira coisa que você vai fazer é clicar AQUI para baixar os arquivos no repositório do github, recomendo criar a seguinte estrutura de pastas e depois se achar necessário pode fazer as alterações -> C:\app\DRS\ <- Dentro da pasta DRS vo

Automatizando Teste de Restore - Introdução



Fala galera, tudo certo?

Fazem aproximadamente 6 meses entrei no mundão dos DBAs, e desde então diariamente venho adquirindo inúmeros conhecimentos com meus colegas de trabalho e com a comunidade na internet. Essa troca de conhecimentos despertou uma vontade muito grande de também compartilhar, e aqui estamos, meu primeiro post.
Estou desenvolvendo uma ferramenta que ainda precisa ganhar um bom nome, mas por hora vamos chama-la de DRS. Data Restore Safety, e é sobre ela que vou falar hoje.

Bom, com esse nome pouco intuitivo já dá para ter ideia da finalidade da ferramenta, primeiro vou explicar a motivação para a criação e em seguida comento sobre seus processos.

Recentemente um cliente solicitou uma rotina de “Teste de Restauração” para um de seus bancos de dados principal. Feito! Criei um job que buscava no diretório de backup a peça mais nova, renomeava os arquivos MDF e LDF, restaurava o banco com outro nome, por fim gerava um log do processo e removia o banco restaurando.

Atendeu a solicitação, mas eu senti que dava para melhorar, após alguns minutos de conversa com um colega do time, surgiu a seguinte ideia:

“Por que você não faz um script genérico que restaura todos os bancos? Afinal, todos são importantes”

Eu fiquei olhando fixamente pro nada por uns 3 minutos até que a ideia foi tomando forma, só não sabia ainda o que fazer com os arquivos MDF e LDF. Pois bem, nasceu o DRS e hoje posso dizer que está é a v1.0 .

Desenvolvido em BATCH e T-SQL o Data Restore Safety restaura todos os bancos de dados qualificados para o procedimento. Após a implementação basta informar o diretório onde ficam as peças de backup, credencias de acesso para a instância e os diretórios de destino para os arquivos MDF, NDF E LDF.

Vamos ver funcionando?

Na imagem abaixo temos a instância LAB com os bancos Financeiro, RH, Traces e Vendas.


E como pode observar, temos duas peças de backup para cada banco de dados:


Dentro do nosso banco Traces temos uma tabela chamada BACKUPQUEUE onde no início do processo serão inseridos os nomes dos bancos qualificados pra a restauração. O nosso semáforo. No momento estou usando como critério o banco ter efetuado ao menos um backup nas últimas 48 horas e não ser um banco de sistema.
Se não existir nenhum banco qualificado, o processo é encerrado, caso exista ao menos um, o processo de restauração inicia. O DRS pega o nome do banco a ser restaurado e busca a peça de backup mais recente deste banco no diretório de backups.
Com o diretório completo da peça selecionada, uma procedure ‘sp_FileRestore’ que também criei no banco Traces é executada para gerar o script de restauração com os novos diretórios para os arquivos MDF, NDF, LDF.
Agora com nosso script de restauração, o DRS faz a restauração propriamente dita, com sucesso ou falha esse banco é removido da BACKUPQUEUE e o resultado vai para o log.
Por fim, outra procedure é executada ‘sp_DropRestore’, com ela, em vez de executar um DROP DATABASE e correr o risco de eliminar uma base que não faz parte do processo, validações são feitas para um DROP DATABASE mais seguro.
Enquanto existir bancos na BACKUPQUEUE, o mesmo processo será executado, segue o log do processo:


Esse é o DRS, no próximo post irei trazer o código comentado e os passos necessários para a implementação da ferramenta.
Toda interação é bem-vinda, abraços,
Natan Rocha.

Comentários

Postagens mais visitadas deste blog

Automatizando Teste de Restore - Implementação