Restaurando o SQL Server granularmente com Veeam e Application-Aware
No artigo anterior eu mostrei como proteger o SQL Server utilizando o Application Aware. Mas o mais interessante é ver o processo de restauração em si, então, neste artigo vamos ver um passo de como podemos restaurar o SQL Server granularmente.
Dentro do meu SQL Server tenho algumas bases de dados, no exemplo vou utilizar o ConzaBase01. Aqui estou listando a tabela Clientes. Além dessa tabela, existem as tabelas Produtos e Compras também.
Agora deleto o item com o ClienteID = 1 e é este item que tenho como objetivo recuperar.
Logo após remover o usuário, eu adicionei outro. Ou seja, pensando em alterações, agora temos uma remoção e uma adição de informação dentro da tabela Clientes.
Digamos que o último backup de imagem da VM do SQL Server tenha executado há 4 horas atrás, então se eu simplesmente restaurar a VM ou o banco de dados inteiro, significa que eu conseguiria restaurar o usuário removido (ClienteID 1), porém, perderia o novo usuário que foi adicionado (ClienteID 6). Neste caso, precisaremos de uma restauração granular, onde a ideia é recuperar apenas o que foi removido, sem alterar as outras instâncias e bases do servidor SQL e além disso, sem alterar as outras tabelas da base de dados ConzaBase01 e também os itens da tabela Clientes. Complexo? Relaxa que é simples!
Vamos para o Veeam Backup & Replication para iniciar a restauração granular a nível de aplicação. Basta selecionar o backup e navegar até Restore application items > Microsoft SQL Server databases…
Aqui vou escolher o último ponto de restauração disponível e vou avançar para que o explorador do SQL Server seja aberto.
A primeira configuração que recomendo fazer no Veeam Explorer for Microsoft SQL Server é o staging server. Para isso, basta clicar no menu sanduiche e depois em General Options. O stagging server é essencial para as funcionalidades de recuperação mais avançadas, ajudando na recuperação de tabelas específicas, exploração dos logs de transação e restauração sem impactar o servidor produtivo. Mais detalhes sobre o staging server aqui.
Agora sim, para restaurarmos granularmente apenas a tabela Clientes, vamos selecionar a base de dados e navegar até Restore schema e depois em Restore database schema and data…
Agora vou selecionar o último ponto de restauração baseado nos backups do transaction log que são realizados a cada 15 minutos (explico mais sobre isso no artigo sobre a configuração do job de backup com Application Aware). A ideia aqui é que o banco de dados será restaurado a um estado anterior à transação envolvida na operação selecionada.
Como mencionei anteriormente, o objetivo é recuperar o usuário ClienteID 1 que foi removido. Então basta selecionar a operação de Row deleted para que eu tenha acesso aos dados da tabela antes da operação de remoção.
Agora defino as configurações do SQL Server de destino. Aqui vou colocar os dados do meu SQL Server nim-sql. Este servidor é standalone e não está no domínio, por isso usei o admin local (.\administrator).
Aqui escolho a restauração do objeto e dados da tabela Clientes.
Agora escolho o nome da tabela que será restaurada no meu SQL Server. Por padrão, o Veeam define o nome da tabela + _new. Neste caso, ficou como Clientes_new. É exatamente isso que você está pensando, nesta opção o Veeam não restaura a tabela sobrescrevendo os dados da sua tabela produtiva. Baseado nas suas escolhas, uma nova tabela será restaurada e então você poderá usar os dados que precisar.
Ah, lembra do staging server? Bom, é nele que o Veeam monta a base de dados temporária para poder abrir o explorador nos menus que vimos acima. É bem interessante esse conceito, pois o Veeam monta a imagem do backup do SQL Server no próprio backup server e te permite explorar e depois faz o mesmo com o backup da base de dados no staging server.
Para finalizar, selecione para preservar o mesmo filegroup e a partition schema e clico em Restore.
E pronto, a tabela Clientes_new foi restaurada com sucesso para o seu SQL Server produtivo. O trabalho do Veeam termina aqui, agora você pode usar o dado da forma que considerar melhor.
Vamos olhar o SQL Server para garantir que tudo está correto. Mandei listar todas as tabelas da base de dados ConzaBase01 e consigo ver a tabela Clientes_new. Listei a tabela Clientes_new e consigo ver o ClienteID 1 que é exatamente o que estou buscando.
Basta copiar o dado que preciso da tabela Clientes_new (restaurada pelo Veeam) para a tabela Clientes (produção). Após copiar o que precisa, não esqueça de remover a tabela temporária. Graças ao Veeam, Josefina Maria está a salvo.
Pronto! Simples, rápido, bastante granular e muito útil.
PS: Conheço pouco de banco de dados, então se existir alguma forma mais inteligente de copiar o dado entre as tabelas, por favor me avise 🙂
É isso aí, pessoal. Até a próxima!