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 perfeita 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 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 o overhead operacional.

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

Objetivos

Neste tutorial, mostramos como concluir as seguintes tarefas para alcançar 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ê vai usar os seguintes componentes faturáveis do Cloud de Confiance by S3NS:

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 Cloud de Confiance projeto. É possível criar um novo projeto ou selecionar um que já foi criado:

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

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

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

      Acessar o seletor de projetos

    2. Verifique se o faturamento está ativado para o projeto do Cloud de Confiance .

    3. No console do Cloud de Confiance , ative o Cloud Shell.

      Ativar o Cloud Shell

  2. Verifique se o Microsoft SQL Server 2022 ou uma versão 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 fazer o backup tem permissões de backup do banco de dados e do registro.

Criar um bucket do Cloud Storage

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

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

  1. Selecionar o projeto Cloud de Confiance .

    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, é preciso ativar a interoperabilidade e gerar uma chave de acesso seguindo estas etapas:

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

    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 que você use 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 informa ao SQL Server para 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 em vigor, 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.

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 para URL no 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 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 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.

Limpar

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

Excluir o projeto

  1. No console Cloud de Confiance , 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 Encerrar para excluí-lo.

A seguir