top of page
Foto do escritorcaiobuzo

Como gerar backup do SQL Server direto no Amazon s3 - SQL Server 2022

Fala galera tudo bem? Nesse post quero abordar uma funcionalidade nova do SQL Server 2022 que é permitir gerar um backup do banco de dados diretamente no s3 que é um serviço de armazenamento na nuvem da amazon, a AWS.


Talvez você se lembre que algo parecido existe com a nuvem da microsoft, o Azure, desde o SQL Server 2012 Service Pack 1 Cumulative Update 2, você pode gerar um backup do SQL Server em VM no azure ou até mesmo local diretamente em uma conta de armazenamento do Azure (storage account).


E agora, 10 anos depois o SQL Server 2022 permitirá que o mesmo ocorra na AWS, usando um bucket do s3.


Se formos comparar os serviços Storage Account / s3, podemos dizer que são praticamente a mesma coisa (cada um tem sua particularidade mas no geral são a mesma coisa). Consistem em um enorme storage na nuvem, onde você pode criar containers(storage account) ou buckets(s3) entenda-se pastas rs e dentro dessas "pastas" gerar os seus backups diretamente.


Isso pode ser muito útil em vários cenários:

1 - Ambiente local e bases pequenas: sabe aquela história de ficar subindo o backup em um drive para manter uma cópia fora? Se o link de internet não for tão ruim, pode ser uma opção.

2 - Compartilhar entre pares de equipe um database, coloca em pen drive, hd externo, ou até sobe no drive e manda o link. Dentro de uma mesma corporação pode-se compartilhar e evitar de ficar transitando em meios "não oficiais".

3 - Implantação de ambiente, precisa subir um template do banco em um novo cliente, pode usar esse "repositório" para centralizar, organizar e facilitar o trabalho.

4 - Você administra bases de dados em uma EC2 (VM na AWS), ao invés de gerar os backups em discos locais para depois ter uma estratégia de copiar e guardar eles no s3, pode ja gerar eles diretamente no s3, ganhando tempo, evitando passos extras e principalmente sem precisar controlar espaço em disco para gerar novos backups.


Esse último ponto citado era possível até o SQL 2019 somente em VMs no Azure e agora recebemos essa nova funcionalidade para executar o backup nesse formato em VMs na AWS (EC2).


Bom, bora para a prática?


Antes de entrar de fato no SQL Server, precisamos fazer algumas configurações no portal da AWS. Acesse a sua conta (caso não tenha ainda clique aqui para ver um vídeo onde ensino a fazer), e na sequencia crie um bucket no S3.



Escolha o nome e região (sempre de preferência alguma proxima ao seu datacenter)

Para esse laboratório que estamos fazendo, desmarque a opção Block all public access (boas praticas são bem vindas em ambientes produtivos).


O restante deixe como esta mesmo e la no final da pagina clique em create bucket.

Com ele criado, entre nele e clique em criar pasta e de um nome a ela, depois clique em create folder.



Selecione a pasta criada, feito isso os botões copy S3 URI e Copy URL serão habilitados, clique em um por vez e cole o conteudo copiado em algum arquivo para salvar, os dois serão úteis para as proximas configurações e geração dos backups.



Exemplo

Copy S3 URI: s3://sqlserver2022/sqlbackup/

Copy URL: https://sqlserver2022.s3.amazonaws.com/sqlbackup/


Agora precisamos criar uma política de permissão nesse bucket que acabamos de criar, no menu superior do portal AWS digite IAM e selecione o recurso. Clique em Create policy.



Selecione o serviço S3 e em nível de acesso escolha as opções ListBucket e PutObject.



Após, na sessão recursos você deve informar o nome do bucket que criou no formato Amazon resource name arn:aws:s3:::bucketname


Em object clique em nenhum.






Na proxima tela revise a política e crie especificando um nome.



Por fim, precisamos de um usuário para fechar toda essa comunicação, volte no menu principal em IAM e depois clique em usuários, Add Users.


Defina um nome, seleciona access key e clique em avançar.

Na sequencia escolha a 3º opção ( Anexar políticas existentes ) e escolha a que acabamos de criar no passo anterior.



Clique em Create User, logo após serão exibidos alguns dados importantíssimos: nome do usuário, Access key ID e Secret Access Key. Guarde todos esses dados pois através deles que será possível conectar no bucket. (Importante, não compartilhe essas informações, pois você estará colocando em risco a segurança dos arquivos e dados ali dentro).



Agora estamos prontos para entrar no SQL Server. Abra o SSMS e siga os passos abaixo, é bem simples a partir daqui.


1 - Crie uma credencial que será usada para a geração do backup

O nome da credencial deve conter as iniciais s3:// e complementar com o caminho da URL copiada nos passos anteriores até a pasta que foi criada dentro do bucket.

Identity será sempre fixo S3 Access Key

SECRET é composto pela Key ID do usuário e a Secret key, separadp por dois pontos ( : )


CREATE CREDENTIAL [s3://s3storagebak.s3.amazonaws.com/sqlbak]

WITH

IDENTITY = 'S3 Access Key'

,SECRET = 'AccesskeyID:SecretAccessKey';



2 - Executar o backup por script


BACKUP DATABASE DB_SISTEMA

TO URL = 's3://caminhodobucket/pastacriada/DB_SISTEMA.bak'

WITH FORMAT ,STATS = 10 ,COMPRESSION;


Quando olhamos em nosso bucket podemos ver o arquivo gerado.


Alguns pontos de atenção:

Um único arquivo de backup pode ter até 200.000 MiB por URL ( MAXTRANSFERSIZE configurado para 20 MB).


Os backups podem ser distribuídos em um máximo de 64 URLs.


A compactação é suportada e recomendada.


A criptografia é suportada.


Ao restaurar um banco de dados, MAXTRANSFERSIZEé determinado pelo valor atribuído durante a fase de backup


Não é compatível com as edições SQL Server Express e SQL Server Express com Advanced Services.


Ao usar partes do S3 no SQL Server 2022 (16.x) Preview, você pode distribuir seu conjunto de backup para dar suporte a arquivos com tamanho de até 12,8 TB.



Nos acompanhe em nossas redes sociais!

Grupo VIP Telegram: DBA On boarding

Youtube(vídeos novos todas as quartas): DBA On boarding

Face & Instagram(conteúdo diário): DBA On boarding


Até a próxima, tchau!


804 visualizações0 comentário

Comentarios


bottom of page