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.
Selecionar o projeto Google Cloud .
gcloud config set project PROJECT_ID
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:
Acesse as configurações do Cloud Storage no console Google Cloud .
Selecione a guia Interoperabilidade.
Em Chaves de acesso para sua conta de usuário, clique em Criar uma chave.
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: