Banco de Dados

15 set, 2025

Entendendo os Backups Distribuídos do SQL Armazenados na Nuvem

Publicidade

Á medida que crescem os bancos de dados, maior se torna o problema para fazer backups, especialmente o temido (mas necessário) backup completo (“full”).

Todo mundo sabe que os backups completos são feitos em horários deslocados porque seu impacto na performance do ambiente é muito grande. Por isso, costumam ser criados de madrugada ou em finais de semana.

Mas o que fazer quando o tempo de criação desse backup  acaba ultrapassando a janela definida? 

Existem várias possibilidades para contornar o problema, mas elas costumam combinar alguns fatores, como uso de discos mais rápidos e a separação do backup em vários discos para que a operação seja paralelizada.

A criação de backups apontando para múltiplos discos não é nenhuma novidade. Estes são os chamados backups distribuídos.

A grande vantagem de se manter backups (sejam simples ou distribuídos) na nuvem é que estes serviços de armazenamento garantem um SLA de 99,99% de disponibilidade, além da redundância do armazenamento (ao menos 3 réplicas nos serviços mais simples).

Neste artigo, apresento princípios básicos para utilização de backups distribuídos armazenados na nuvem (Azure Storage Account).

Preparação da Storage Account

Logo após a implementação da conta de armazenamento do AZURE, é necessário criar um “container” de uso exclusivo para fins de gravação dos backups, como mostra a figura a seguir (container “backupfull”).

Figura 01 – criação do container “backupfull”

Ao abrir o container “backfull”, acesse a aba SHARED ACCESS TOKENS. O token que vamos criar permitirá acesso de leitura e escrita no container e seus arquivos. Ou seja, será possível executar operações de backup e restauração na base de dados.

Além das permissões de READ e WRITE (respectivamente, para restore e backup), é preciso definir o prazo de validade do token. Não é boa prática que se use prazos muito longos, geralmente não maior que 06 meses.

Para finalizar, clique o botão azul para criar o token, como se vê na imagem abaixo, e copie o resultado. Ele será usado no próximo passo desse roteiro.

Figura 2 – geração do SAS Token

Preparação da Credencial do SQL Server

Para que o SQL Server tenha acesso ao container onde estão os backups, é necessário criar uma credencial para o SQL usando o token que acabamos de gerar.

Neste exemplo, criarei uma credencial usando um “SAS Token”, que é o modo mais simples de acesso. Para isso é preciso informar a URI do container “backupfull”, definir a identidade com o tipo “shared access signature” e informar o token, como mostra o quadro a seguir:

CREATE CREDENTIAL 

 [https:// stodemowgc01.blob.core.windows.net/backupfull/<opcional>]

 WITH IDENTITY = 'SHARED ACCESS SIGNATURE', 

 SECRET = '<SAS_TOKEN>';

Observe que após o nome do container existe um sufixo opcional. Isso é usado quando se precisar criar credenciais para perfis diferentes de usuários. Por exemplo: eu poderia criar uma credencial para quem executa os backups e restaurações da base (permissões de READ e WRITE) e um segundo perfil que precisa apenas a permissão para executar o RESTORE. Nesse caso, eu criaria uma credencial adicional usando um novo token com permissão de leitura, como mostra o quadro a seguir:

CREATE CREDENTIAL 

 [https:// stodemowgc01.blob.core.windows.net/backupfull/credencial2]

 WITH IDENTITY = 'SHARED ACCESS SIGNATURE', 

 SECRET = '<novo_SAS_TOKEN>';

Criando o Backup

Uma vez que se tenha a credencial SQL, o backup pode ser criado informando a URI seguida dos nomes de arquivos que vão compor este backup.

Assim temos a seguinte declaração SQL para gerar um backup da base WideWorldImporters segmentado em 10 arquivos diferentes:

BACKUP DATABASE [WideWorldImporters]

TO URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_01.bak',

   URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_02.bak',

   URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_03.bak',

   URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_04.bak',

   URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_05.bak',

   URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_06.bak',

   URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_07.bak',

   URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_08.bak',

   URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_09.bak',

   URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_10.bak'

WITH FORMAT, INIT, COMPRESSION, STATS = 10;

Verificando o Conteúdo do Backup

Para verificar os apontamentos dos “datafiles” copiados neste backup distribuído, basta o comando RESTORE FILELISTONLY, como mostrado a seguir:

RESTORE FILELISTONLY 

FROM 

   URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_01.bak',

   URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_02.bak',

   URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_03.bak',

   URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_04.bak',

   URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_05.bak',

   URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_06.bak',

   URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_07.bak',

   URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_08.bak',

   URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_09.bak',

   URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_10.bak'

GO

Esta verificação lhe mostra quais os datafiles usados pela base de dados e em que discos eles serão gravados quando houver o RESTORE.

Restaurando a Base de Dados

Finalmente, para restaurar uma cópia da base de dados para um ambiente novo (digamos, ambiente de DEV), muitas vezes é necessário redirecionar os “datafiles” da base para os discos que existem nessa nova máquina. 

A declaração SQL de restauração do backup distribuído seguido da movimentação de “datafiles” é apresentada a seguir:

RESTORE DATABASE WideWorldImporters

  FROM 

  URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_01.bak',

  URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_02.bak',

  URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_03.bak',

  URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_04.bak',

  URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_05.bak',

  URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_06.bak',

  URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_07.bak',

  URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_08.bak',

  URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_09.bak',

  URL = 'https://stodemowgc01.blob.core.windows.net/backupfull/WWI_202250909_10.bak'

  WITH RECOVERY,

  MOVE 'WWI_Primary'   TO 'C:\Database\Data2\WideWorldImporters.mdf',

  MOVE 'WWI_UserData'  TO 'C:\Database\Data2\WideWorldImporters_UserData.ndf',

  MOVE 'WWI_Log'       TO 'C:\Database\LOG2\WideWorldImporters.ldf' ,

  MOVE 'WWI_InMemory_Data_1' TO 'C:\Database\Data2\WideWorldImporters_InMemory_Data_1'

GO

Reciclagem das Credenciais

Como comentei acima, as credenciais SQL usam um token que tem um ciclo de vida curto, normalmente alguns meses.

Isso significa que as credenciais precisam ser atualizadas periodicamente, apontando para um novo token.

O processo de renovação desses segredos é bastante simples, envolvendo duas operações:

  1. Criação de um novo token, conforme mostrado na Figura 02
  2. Atualização da credencial usando o segredo, através dessa declaração:

ALTER CREDENTIAL 

  [https:// stodemowgc01.blob.core.windows.net/backupfull/[opcional]]

 WITH IDENTITY = 'SHARED ACCESS SIGNATURE', 

 SECRET = '<SAS_TOKEN>';

Comentários Finais

Com esta visão geral, acredito que você já consiga criar seu primeiro backup distribuído na nuvem.

Existem outros métodos de autenticação ainda mais seguros que o SAS Token, mas eu resolvi apresentar este recurso por ser mais simples que as demais opções. De qualquer maneira, é importante saber que o uso de SAS Token é largamente utilizado no mundo todo.

Até a próxima.

Leitura Sugerida

  1. BACKUP (Transact-SQL) – SQL Server | Microsoft Learn
  2. Restaurando de backups armazenados no Microsoft Azure – SQL Server | Microsoft Learn