Fazer backup de bancos de dados do SQL Server em um bucket do Cloud Storage

Neste tutorial, descrevemos como fazer backup direto de um banco de dados do Microsoft SQL Server 2022 em um bucket do Cloud Storage e restaurá-lo mais tarde. Introduzido no SQL Server 2022, o recurso nativo de backup do SQL Server oferece uma estratégia simples e econômica para recuperação de desastres e migração de dados baseadas na nuvem.

O recurso nativo de backup do SQL Server usa os comandos BACKUP TO URL e RESTORE FROM URL, que são compatíveis com o armazenamento de objetos compatível com S3, incluindo o Cloud Storage. Isso elimina a necessidade de armazenamento local intermediário, simplificando o fluxo de trabalho de backup e reduzindo a sobrecarga operacional.

Este tutorial é destinado a administradores e engenheiros de banco de dados.

Criar um bucket do Cloud Storage

É possível criar um bucket do Cloud Storage usando o console Google Cloud ou o comando gcloud storage.

Para criar um bucket do Cloud Storage usando o comando gcloud storage, siga estas etapas.

  1. Selecionar o projeto Google Cloud .

    gcloud config set project PROJECT_ID
    
  2. Crie o bucket Para criar o bucket, execute o comando gcloud storage buckets create da seguinte maneira.

      gcloud storage buckets create gs://BUCKET_NAME --location=BUCKET_LOCATION
    

    Substitua:

  • BUCKET_NAME: com um nome exclusivo para o bucket.
  • BUCKET_LOCATION: com o local do bucket.

Configurar a interoperabilidade do S3 e criar uma chave de acesso

Para permitir que o SQL Server se comunique com o Cloud Storage usando o protocolo S3, ative a interoperabilidade e gere uma chave de acesso seguindo estas etapas:

  1. Acesse as configurações do Cloud Storage no console Google Cloud .

    Acessar as configurações do Cloud Storage

  2. Selecione a guia Interoperabilidade.

  3. Em Chaves de acesso para sua conta de usuário, clique em Criar uma chave.

    Chaves de acesso ao bucket

  4. Salve a chave de acesso e o secret gerados com segurança. Você vai precisar deles na próxima etapa.

Para ambientes de produção, recomendamos o uso de uma chave de código de autenticação de mensagem baseada em hash (HMAC) de conta de serviço para melhorar a segurança e o gerenciamento.

Adicionar credenciais ao SQL Server

Para permitir que o SQL Server se autentique com seu bucket do Cloud Storage, crie um objeto de credencial no SQL Server para armazenar a chave de acesso e o segredo do Cloud Storage. Para fazer isso, execute o seguinte comando T-SQL no SQL Server Management Studio (SSMS).

CREATE CREDENTIAL CREDENTIAL_NAME
WITH
    IDENTITY = 'S3 Access Key',
    SECRET = 'ACCESS_KEY:SECRET';

Substitua:

  • CREDENTIAL_NAME: com um nome para suas credenciais.
  • ACCESS_KEY: com a chave de acesso criada na seção anterior.
  • SECRET: com o secret que você criou na seção anterior.

IDENTITY = 'S3 Access Key' é crucial porque instrui o SQL Server a usar o novo conector do S3. O secret precisa ser formatado como a chave de acesso, seguido por dois pontos e, em seguida, a chave secreta.

Exemplo:

CREATE CREDENTIAL sql_backup_credentials
WITH
    IDENTITY = 'S3 Access Key',
    SECRET = 'GOOGGE3SVF7OQE5JRMLQ7KWB:b31Pl8Tx1ARJfdGOsbgMFQNbk3nPdlT2UCYzs1iC';

Fazer backup dos dados no Cloud Storage

Com a credencial no lugar, agora é possível fazer backup do banco de dados diretamente no bucket do Cloud Storage usando o comando BACKUP DATABASE com a opção TO URL. Adicione o prefixo s3://storage.googleapis.com ao URL para usar o conector do S3, conforme mostrado abaixo.

BACKUP DATABASE DATABASE_NAME
TO URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME.bak'
WITH
    CREDENTIAL = 'CREDENTIAL_NAME',
    FORMAT,
    STATS = 10,
    MAXTRANSFERSIZE = 10485760,
    COMPRESSION;

Substitua:

  • CREDENTIAL_NAME O nome da credencial que você criou na etapa 3. Por exemplo: sql_backup_credentials.
  • BUCKET_NAME O nome do bucket criado na Etapa 1.
  • FOLDER_NAME: o nome da pasta em que você quer armazenar o arquivo de backup.
  • BACKUP_FILE_NAME O nome do arquivo de backup.

Confira abaixo as descrições dos parâmetros de backup usados no comando:

  • FORMAT: substitui os arquivos de backup atuais e cria um novo conjunto de mídia.
  • STATS: informa o progresso do backup.
  • COMPRESSION: compacta o backup, o que pode reduzir o tamanho do arquivo e o tempo de upload.
  • MAXTRANSFERSIZE: recomendado para evitar erros de E/S com arquivos de backup grandes.

Para mais informações, consulte Backup do SQL Server para URL de armazenamento de objetos compatível com S3.

Para bancos de dados muito grandes, divida o backup em vários arquivos da seguinte maneira.

BACKUP DATABASE DATABASE_NAME
TO
    URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME_0.bak',
    URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME_1.bak'
    -- ... more files
WITH
    CREDENTIAL = 'CREDENTIAL_NAME',
    FORMAT,
    STATS = 10,
    MAXTRANSFERSIZE = 10485760,
    COMPRESSION;

Restaurar seus dados do Cloud Storage

É possível restaurar seu banco de dados diretamente de um arquivo de backup armazenado no Cloud Storage usando o comando RESTORE DATABASE da seguinte maneira.

RESTORE DATABASE DATABASE_NAME
FROM URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME.bak'
WITH
    CREDENTIAL = 'CREDENTIAL_NAME';

Substitua:

  • CREDENTIAL_NAME O nome da credencial que você criou na etapa 3. Por exemplo: sql_backup_credentials.
  • BUCKET_NAME O nome do bucket criado na Etapa 1.
  • FOLDER_NAME: o nome da pasta em que você quer armazenar o arquivo de backup.
  • BACKUP_FILE_NAME O nome do arquivo de backup.