SQL Server – Backup em nuvem (Azure)

Definir uma política de recuperação de desastre (DR) – disaster recovery – de um servidor é uma das principais e mais importantes atribuições de um DBA.

Uma boa política de DR deve prever todo tipo de incidente e descrever as ações que devem ser tomadas para reestabelecer o correto funcionamento do banco de dados.

Um fator de extrema importância é a definição de onde armazenar os backups realizados. Utilizar um volume físico diferente do que armazena os arquivos do banco de dados é o mínimo que devemos adotar, pois evita a perda total em caso de problema físico com o disco. Mas, e se o servidor todo for comprometido por um ataque hacker do tipo ransonware (sequestro de dados mediante a criptografia)? É importante elaborar um plano de DR robusto suficiente para lidar com esse tipo de situação. Uma alternativa é manter cópias de backup fora do servidor, podendo ser inclusive na nuvem. O SQL Server permite a geração de backups diretamente no Azure Blob Storage – neste artigo iremos mostrar o passo a passo para utilizá-lo.

1º Passo – Criar um Storage Account no Azure

No portal do Azure devemos criar um novo Storage Account. Para isto, precisamos atribuí-lo a um Resource Group. Para demonstração, escolhemos criar o Storage Account “backupazureblog” em um novo Resource Group chamado “blog-rg”.

As configurações padrões foram mantidas.

2º Passo – Criar um Container

Após criado o Storage Account, o próximo passo é criar um Container para o backupazureblog. Em nossa demonstração criamos com o nome “backupsql”.

3º Passo – Criação do acesso compartilhado (SAS) para credencial do SQL Server

Por fim, precisamos criar uma assinatura de acesso compartilhado – SAS (Shared access signature). Nesta interface do Container precisamos selecionar as permissões de Read, Write, List e Delete no campo Permission. É muito importante determinar um período de expiração que seja grande suficiente, para que não ocorram erros por expiração.

Observação: No exemplo acima a assinatura irá expirar no dia 01/03/2021. Mantive essa data de expiração, pois se tratava apenas de um teste.

4º Passo – Criação de credencial no SQL Server

Após criado a Storage Account e o Container e também gerado uma assinatura de acesso compartilhado (SAS), agora precisamos configurar uma credencial no SQL Server para que ele possa se conectar ao Container e gravar o backup utilizando a assinatura criada.

CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>] 
   WITH IDENTITY = 'SHARED ACCESS SIGNATURE',  
   SECRET = '<SAS_TOKEN>';  

Para a nossa demonstração, temos:

CREATE CREDENTIAL [https://backupazureblog.blob.core.windows.net/backupsql] 
   WITH IDENTITY = 'SHARED ACCESS SIGNATURE',  
   SECRET = 'sp=rwdl&s...%3D'

5º Passo – Realizando o backup para o Azure

Com a criação da credencial no SQL Server, podemos agora simplesmente executar o comando nativo de backup com a opção “TO URL”, conforme exemplo abaixo:

BACKUP DATABASE teste
TO URL = 'https://backupazureblog.blob.core.windows.net/backupsql/teste_blog.bak'
WITH COMPRESSION, STATS = 5;

Os backups para o Azure possuem algumas limitações, portanto é importante ler a documentação oficial da Microsoft e verificar o impacto das limitações antes de adotar essa estratégia de backup.

Referências

SQL Server Backup to URL – SQL Server | Microsoft Docs

Deixe um comentário

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