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

Objetivos

Neste tutorial, mostramos como concluir as seguintes tarefas para alcançar seu objetivo:

  • Crie 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 Google Cloud:

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

Novos usuários do Google Cloud 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 projeto Google Cloud . É possível criar um novo projeto ou selecionar um que já foi criado:

    1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

      Roles required to select or create a project

      • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
      • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

      Go to project selector

    2. Verify that billing is enabled for your Google Cloud project.

    3. In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

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

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

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

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

    8. 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 do 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 usar 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.

      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 Backup do SQL Server para URL para 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.

      Limpar

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

      Excluir o projeto

      1. In the Google Cloud console, go to the Manage resources page.

        Go to Manage resources

      2. In the project list, select the project that you want to delete, and then click Delete.
      3. In the dialog, type the project ID, and then click Shut down to delete the project.

      A seguir