Faça uma cópia de segurança de bases de dados do SQL Server para um contentor do Cloud Storage

Este tutorial descreve como fazer uma cópia de segurança direta de uma base de dados do Microsoft SQL Server 2022 para um contentor do Cloud Storage e restaurá-la posteriormente. Introduzida no SQL Server 2022, a funcionalidade nativa de cópia de segurança do SQL Server oferece uma estratégia simples e rentável para a recuperação de desastres e a migração de dados baseadas na nuvem.

A funcionalidade nativa de cópia de segurança do SQL Server tira partido dos comandos BACKUP TO URL e RESTORE FROM URL que suportam o armazenamento de objetos compatível com S3, incluindo o Cloud Storage. Isto elimina a necessidade de armazenamento local intermédio, simplificando o fluxo de trabalho de cópia de segurança e reduzindo os custos gerais operacionais.

Este tutorial destina-se a administradores e engenheiros de bases de dados.

Objetivos

Este tutorial mostra como concluir as seguintes tarefas para alcançar o seu objetivo:

  • Crie um novo contentor do Cloud Storage
  • Configure um conetor do SQL Server
  • Faça uma cópia de segurança da base de dados
  • Restaure a base de dados a partir da cópia de segurança

Custos

Neste documento, usa os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custos com base na sua utilização projetada, use a calculadora de preços.

Os novos Google Cloud utilizadores podem ser elegíveis para uma avaliação gratuita.

Quando terminar as tarefas descritas neste documento, pode evitar a faturação contínua eliminando os recursos que criou. Para mais informações, consulte o artigo Limpe.

Antes de começar

  1. Para este tutorial, precisa de um Google Cloud projeto. Pode criar um novo ou selecionar um projeto que já criou:

    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 (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. Certifique-se de que o Microsoft SQL Server 2022 ou posterior está instalado e em execução.

    5. Certifique-se de que o seu projeto do Google Cloud e o SQL Server têm as autorizações necessárias para realizar tarefas de cópia de segurança e restauro.

    6. Certifique-se de que o utilizador ou a conta de serviço associada às chaves de acesso tem autorizações para criar e ver objetos no contentor do Cloud Storage.

    7. Certifique-se de que a conta de utilizador do SQL Server usada para fazer a cópia de segurança tem autorizações de base de dados de cópia de segurança e registo de cópia de segurança.

    8. Crie um contentor do Cloud Storage

      Pode criar um contentor do Cloud Storage através da Google Cloud consola ou do comando gcloud storage.

      Para criar um contentor do Cloud Storage com o comando gcloud storage, siga os passos abaixo.

      1. Selecione o seu projeto do Google Cloud .

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

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

        Substitua o seguinte:

      • BUCKET_NAME: com um nome exclusivo para o seu contentor.
      • BUCKET_LOCATION: com a localização do seu contentor.

      Configure a interoperabilidade do S3 e crie uma chave de acesso

      Para permitir que o SQL Server comunique com o Cloud Storage através do protocolo S3, tem de ativar a interoperabilidade e gerar uma chave de acesso através dos seguintes passos:

      1. Navegue para as definições do Cloud Storage na Google Cloud consola.

        Aceda às definições do Cloud Storage

      2. Selecione o separador Interoperabilidade.

      3. Em Chaves de acesso para a sua conta de utilizador, clique em Criar uma chave.

        Chaves de acesso do contentor

      4. Guarde a chave de acesso e o segredo gerados em segurança. Vai precisar deles no passo seguinte.

      Para ambientes de produção, recomendamos que use uma chave de código de autenticação de mensagens (HMAC) baseada em hash de conta de serviço para uma melhor segurança e gestão.

      Adicione credenciais ao SQL Server

      Para permitir que o SQL Server faça a autenticação com o seu contentor do Cloud Storage, tem de criar um objeto de credenciais no SQL Server para armazenar a chave de acesso e o segredo do Cloud Storage. Para o fazer, 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 o seguinte:

      • CREDENTIAL_NAME: com um nome para as suas credenciais.
      • ACCESS_KEY: com a chave de acesso que criou na secção anterior.
      • SECRET: com o segredo que criou na secção anterior.

      O IDENTITY = 'S3 Access Key' é fundamental, uma vez que indica ao SQL Server que deve usar o novo conetor S3. O segredo deve ser formatado como a chave de acesso, seguido de dois pontos e, em seguida, a chave secreta.

      Exemplo:

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

      Faça uma cópia de segurança dos seus dados no Cloud Storage

      Com a credencial no lugar, já pode fazer uma cópia de segurança da base de dados diretamente para o contentor do Cloud Storage através do comando BACKUP DATABASE com a opção TO URL. Preceda o URL com s3://storage.googleapis.com para usar o conector do S3, da seguinte forma.

      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 o seguinte:

      • CREDENTIAL_NAME O nome da credencial que criou no passo 3. Por exemplo: sql_backup_credentials.
      • BUCKET_NAME O nome do contentor que criou no passo 1.
      • FOLDER_NAME O nome da pasta onde quer armazenar o ficheiro de cópia de segurança.
      • BACKUP_FILE_NAME O nome do ficheiro de cópia de segurança.

      As descrições dos parâmetros de cópia de segurança usados no comando são as seguintes:

      • FORMAT: substitui os ficheiros de cópia de segurança existentes e cria um novo conjunto de multimédia.
      • STATS: comunica o progresso da cópia de segurança.
      • COMPRESSION: comprime a cópia de segurança, o que pode reduzir o tamanho do ficheiro e o tempo de carregamento.
      • MAXTRANSFERSIZE: recomendado para evitar erros de E/S com ficheiros de cópias de segurança grandes.

      Para mais informações, consulte o artigo SQL Server back up to URL for S3-compatible object storage (Cópia de segurança do SQL Server para URL para armazenamento de objetos compatível com S3).

      Para bases de dados muito grandes, pode dividir a cópia de segurança em vários ficheiros da seguinte forma.

      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;
      

      Restaure os seus dados a partir do Cloud Storage

      Pode restaurar a sua base de dados diretamente a partir de um ficheiro de cópia de segurança armazenado no Cloud Storage através do comando RESTORE DATABASE da seguinte forma.

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

      Substitua o seguinte:

      • CREDENTIAL_NAME O nome da credencial que criou no passo 3. Por exemplo: sql_backup_credentials.
      • BUCKET_NAME O nome do contentor que criou no passo 1.
      • FOLDER_NAME O nome da pasta onde quer armazenar o ficheiro de cópia de segurança.
      • BACKUP_FILE_NAME O nome do ficheiro de cópia de segurança.

      Limpar

      Para evitar incorrer em custos na sua conta do Google Cloud pelos recursos usados neste tutorial:

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

      O que se segue?