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

Este tutorial descreve 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 baseada na nuvem.

O recurso nativo de backup do SQL Server aproveita os comandos BACKUP TO URL e RESTORE FROM URL, que oferecem suporte ao 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.

Objetivos

Este tutorial mostra como concluir as seguintes tarefas para atingir seu objetivo:

  • Criar um novo bucket do Cloud Storage
  • Configurar um conector do SQL Server
  • Fazer backup do banco de dados
  • Restaurar o banco de dados do backup

Custos

Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custo baseada na projeção de uso, use a calculadora de preços.

Novos Google Cloud usuários podem estar qualificados para um teste sem custo financeiro.

Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Para mais informações, consulte Limpeza.

Antes de começar

  1. Para este tutorial, você precisa de um Google Cloud projeto. É possível criar um novo projeto ou selecionar um que já foi criado:

    1. No Google Cloud console do, na página do seletor de projetos, escolha ou crie um Google Cloud projeto do.

      Papéis necessários para selecionar ou criar um projeto

      • Selecionar um projeto: a seleção de um projeto não exige um papel específico do IAM. Você pode selecionar qualquer projeto em que tenha recebido um papel.
      • Criar um projeto: para criar um projeto, você precisa do papel de criador de projetos (roles/resourcemanager.projectCreator), que contém a resourcemanager.projects.create permissão. Saiba como conceder papéis.

      Acessar o seletor de projetos

    2. Verifique se o faturamento está ativado para o Google Cloud projeto.

    3. No Google Cloud console, ative o Cloud Shell.

      Ativar o Cloud Shell

  2. Verifique se o Microsoft SQL Server 2022 ou mais recente está instalado e em execução.

  3. Verifique se o projeto na nuvem do Google Cloud e o SQL Server têm as permissões necessárias para realizar tarefas de backup e restauração.

  4. Verifique se o usuário ou a conta de serviço associada às chaves de acesso tem permissões para criar e visualizar objetos no bucket do Cloud Storage.

  5. Verifique se a conta de usuário do SQL Server usada para realizar o backup tem permissões de banco de dados de backup e de registro de backup.

Criar um bucket do Cloud Storage

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

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

  1. Selecionar o Google Cloud projeto.

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

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

    Substitua:

  • BUCKET_NAME: por um nome exclusivo para o bucket.
  • BUCKET_LOCATION: pelo 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, é necessário ativar a interoperabilidade e gerar uma chave de acesso seguindo estas etapas:

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

    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 baseado em hash (HMAC) da conta de serviço para melhor segurança e gerenciamento.

Adicionar credenciais ao SQL Server

Para permitir que o SQL Server seja autenticado com o bucket do Cloud Storage, é necessário criar um objeto de credencial no SQL Server para armazenar a chave de acesso e o secret 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: por um nome para suas credenciais.
  • ACCESS_KEY: pela chave de acesso criada na seção anterior.
  • SECRET: pelo secret criado na seção anterior.

IDENTITY = 'S3 Access Key' é fundamental, pois informa ao SQL Server para usar o novo conector 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 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 criada 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.

As descrições dos parâmetros de backup usados no comando são as seguintes:

  • 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 Fazer backup do SQL Server no URL para armazenamento de objetos compatível com S3.

Para bancos de dados muito grandes, é possível dividir o backup em vários arquivos, conforme mostrado abaixo.

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 os dados do Cloud Storage

É possível restaurar o banco de dados diretamente de um arquivo de backup armazenado no Cloud Storage usando o comando RESTORE DATABASE, conforme mostrado abaixo.

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 criada 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.

Liberar espaço

Para evitar cobranças na sua Google Cloud conta pelos recursos usados neste tutorial:

Excluir o projeto

  1. No Google Cloud console, acesse a página Gerenciar recursos.

    Acessar "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir.
  3. Na caixa de diálogo, digite o ID do projeto e clique em Desligar para excluir o projeto.

A seguir