O blog da AWS

Backup e restauração nativas com integração do Amazon S3 no Amazon RDS Custom for SQL Server 2022

Por Srikanth Katakam e Minesh Chande

O Amazon Relational Database Service (Amazon RDS) Custom for SQL Server é um serviço de banco de dados gerenciado para aplicações personalizadas e empacotadas que exigem acesso ao sistema operacional (OS) e ao ambiente de banco de dados (DB) subjacentes. O Amazon RDS Custom for SQL Server automatiza a configuração, a operação e a escalabilidade de bancos de dados na nuvem, ao mesmo tempo em que concede acesso ao banco de dados e ao sistema operacional subjacente. Usando isso, você pode definir configurações, instalar drivers e ativar recursos nativos para atender aos requisitos da aplicação dependente.

Antes do SQL Server 2022, o Amazon RDS Custom for SQL Server não tinha suporte direto para backup e restauração usando o Amazon Simple Storage Service (Amazon S3). Normalmente, os usuários realizavam backups nativos no disco local e, se necessário, carregavam o mesmo arquivo de backup em um bucket do S3 a partir do disco local. Agora que o Amazon RDS Custom for SQL Server oferece suporte ao SQL Server 2022, você pode configurar a integração com o Amazon S3 e realizar diretamente operações nativas de backup e restauração de e para o bucket do S3.

Neste post, explicamos como você pode configurar a integração do Amazon S3 no Amazon RDS Custom para SQL Server 2022.

Visão geral da solução

A partir do SQL Server 2022 (16.x), a Microsoft incluiu suporte para armazenamento de objetos compatível com Amazon S3. Neste post, demonstramos como configurar a integração do Amazon S3 no Amazon RDS Custom for SQL Server (2022) e, em seguida, realizar operações nativas de backup e restauração em um bucket do S3. Para obter mais detalhes, consulte Backup do SQL Server em URL para armazenamento de objetos compatível com S3.

A seguir estão as etapas de alto nível:

  1. Crie um bucket S3.
  2. Crie uma política do AWS Identity and Access Management (IAM) com as permissões necessárias para acessar o bucket do S3.
  3. Crie um usuário do IAM e anexe a política do IAM.
  4. Crie uma instância do RDS Custom for SQL Server (2022).
  5. Crie credenciais do SQL Server para acessar o bucket do S3.
  6. Execute o backup nativo usando a URL do bucket do S3.
  7. Execute a restauração nativa usando a URL do bucket do S3.

Essa solução envolve a criação e a utilização de novos recursos da AWS. Portanto, isso incorrerá em custos em sua conta. Consulte os preços da AWS para obter mais informações.

Pré-requisitos

Os seguintes pré-requisitos são necessários para implementar essa solução:

Crie um bucket S3

Crie um bucket S3 para armazenar arquivos de backup para operações de backup e restauração. Para obter mais detalhes, consulte Como criar um bucket.

Neste exemplo, criamos um bucket do S3 chamado cfs-s3-bucket-for-backups e, em seguida, criamos uma pasta chamada ss-2022 na região us-west-2.

Crie uma política do IAM

Como parte de nossa política do IAM, definimos o nome do bucket do S3 e concedemos as seguintes permissões necessárias para acessar o bucket do S3:

  • s3:ListBucket para permitir a listagem do conteúdo do bucket
  • s3:PutObject para permitir que os arquivos de backup sejam gravados no bucket
  • s3:GetObject para permitir que os arquivos de backup sejam lidos do bucket

Você pode usar o código a seguir para criar uma política do IAM chamada cfs-iam-policy-for-backups usando a AWS Command Line Interface (AWS CLI). Ele concede as permissões necessárias ao bucket do S3 chamado cfs-s3-bucket-for-backups. Você pode substituir o bucket S3 por um valor apropriado:

aws iam create-policy \
    --policy-name cfs-iam-policy-for-backups \
    --policy-document '{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::cfs-s3-bucket-for-backups*"
}
]
}'

Crie um usuário do IAM e anexe a política do IAM

Crie um usuário do IAM e anexe a política do IAM que você criou anteriormente. Para obter instruções, consulte Como criar um usuário do IAM em sua conta da AWS. É importante criar uma access key e anotar a ID da access key e a secret access key — você as usará para criar credenciais do SQL Server em uma etapa posterior para acesso ao bucket do S3 no nível do banco de dados.

Crie uma instância personalizada do RDS para SQL Server (2022)

Antes de criar sua primeira instância do RDS Custom for SQL Server, verifique se todos os pré-requisitos foram configurados com êxito. Consulte Configurando seu ambiente para o Amazon RDS Custom for SQL Server para obter mais informações.

Você pode usar o comando a seguir para criar uma instância do RDS Custom for SQL Server (usando o SQL Server 2022) com a AWS CLI. Substitua <db-instance-name>, <key-id>, <custom-iam-profile>, <security-group-id> e <db-subnet-group> por valores apropriados.

aws rds create-db-instance \
 --db-instance-identifier <db-instance-name> \
 --engine custom-sqlserver-ee \
 --kms-key-id <key-id> \
 --engine-version 16.00.4085.2.v1 \
 --master-username admin \
 --master-user-password ********* \
 --db-instance-class db.m5.2xlarge \
 --allocated-storage 200 \
 --storage-type gp3 \
--region us-west-2 \
 --custom-iam-instance-profile <custom-iam-profile> \
--vpc-security-group-ids <security-group-id> \
 -db-subnet-group <db-subnet-group> 

Crie credenciais do SQL Server para acessar o bucket do S3

Depois que a criação da instância for bem-sucedida, faça login no banco de dados usando SSMS e o usuário principal.

O exemplo a seguir cria credenciais do SQL Server para autenticação com o endpoint de armazenamento de objetos. Use o ID da access key e o ID da secret access key da etapa anterior. O exemplo a seguir usa uma pasta chamada ss-2022 no bucket do S3 cfs-s3-bucket-for-backups.

CREATE CREDENTIAL   [s3://<endpoint>:<port>/<bucket>]
WITH
        IDENTITY    = 'S3 Access Key',
        SECRET      = '<AccessKeyID>:<SecretKeyID>';

Example:
CREATE CREDENTIAL [s3://cfs-s3-bucket-for-backups.s3.us-west-2.amazonaws.com/ss-2022]
WITH IDENTITY = 'S3 Access Key',
SECRET = 'ABCDEFGHXXXXX:CKLKq6/123456789XXXX';

Execute o backup nativo usando a URL do bucket S3

O comando a seguir cria um banco de dados de amostra chamado test1 e salva um backup completo chamado test-full-1.bak no bucket do S3 cfs-s3-bucket-for-backups na pasta ss-2022. Você pode substituir o nome e o URL do banco de dados pelos valores apropriados.

-- Create database test1
create database test1;

use test1;

-- create table t1
create table t1 (id int);
insert into t1 values (10)
go 100

-- create table t2
create table t2 (id int);
insert into t2 values (10)
go 100

-- backup database test1
BACKUP DATABASE test1
TO URL = 's3://cfs-s3-bucket-for-backups.s3.us-west-2.amazonaws.com/ss-2022/test-full-1.bak' WITH FORMAT, MAXTRANSFERSIZE = 20971520, COMPRESSION;

Execute a restauração nativa usando o URL do bucket do S3

O comando a seguir usa um arquivo de backup test-full-1.bak do bucket do S3 e o restaura na instância do RDS Custom for SQL Server com o nome do banco de dados test2.

RESTORE DATABASE test2
FROM URL ='s3://cfs-s3-bucket-for-backups.s3.us-west-2.amazonaws.com/ss-2022/test-full-1.bak'
WITH move 'test1' to 'D:\RDSDBData\test2.mdf',
move 'test1_log' to 'D:\RDSDBData\test2_log.ldf';

Conclusão

Neste post, fornecemos um guia passo a passo para implementar a integração do Amazon S3 no Amazon RDS Custom for SQL Server, que incluiu a criação de um bucket do S3, um usuário do IAM e uma política do IAM. Também demonstramos como criar credenciais do Amazon S3 no SQL Server e, em seguida, realizar com sucesso operações nativas de backup e restauração. Deixe um comentário se tiver alguma dúvida.

Para saber mais sobre onde ou quando usar o RDS Custom, confira Trabalhando com o RDS Custom for SQL Server.

Este blog em português é uma tradução do blog original em inglês.

Autores

Srikanth Katakam é engenheiro sênior de banco de dados na Amazon Web Services. Ele trabalha na equipe do Amazon RDS, com foco em mecanismos de banco de dados comerciais, Amazon RDS Custom e SQL Server. Ele gosta de trabalhar em desafios técnicos no Amazon RDS e é apaixonado por aprender e compartilhar conhecimento com seus colegas de equipe e clientes da AWS.

 

Minesh Chande é arquiteta sênior de soluções especialista em banco de dados na Amazon Web Services. Ele ajuda clientes de diferentes setores verticais do setor a projetar, migrar e otimizar suas cargas de trabalho do SQL Server para uma plataforma de banco de dados gerenciada, como Amazon RDS e Amazon RDS Custom.

 

 

Tradutores e Revisores

Luiz Rampanelli é um Solutions Architect no time da AWS Latam. Possui mais de 10 anos de experiência com workloads Microsoft em nuvem e ambientes híbridos. Atua com desenho de soluções seguindo as melhores práticas para que os clientes possam aproveitar ao máximo os benefícios da nuvem da AWS.
Diego Voltz atua como arquiteto de soluções senior no seguimento de enterprise na AWS no sul da Florida. Ele atuou por 15 anos como CTO de Startups no seguimento de Web Hosting e Health, tendo como foco virtualização, Storage e containers, hoje ajuda os clientes da AWS na jornada de adoção da nuvem e na otimização dos custos.