Gerenciar backups para instâncias do SQL Server RDS é crucial para garantir a disponibilidade de dados e recuperação de desastres. A AWS fornece ferramentas para facilitar esse processo, incluindo comandos para fazer backup de bancos de dados do SQL Server RDS diretamente no Amazon S3. Este artigo guia você pelos comandos e configurações necessários para realizar backups e restaurações.
Fazendo Backup do SQL Server RDS para o S3
O procedimento armazenado principal usado para criar backups é msdb.dbo.rds_backup_database
. Este comando permite que você especifique o banco de dados a ser copiado e a localização no S3 onde o backup será armazenado.
Parâmetros do Pacote
O procedimento armazenado suporta vários parâmetros, que são categorizados como obrigatórios e opcionais.
Parâmetros Obrigatórios
@source_db_name
: O nome do banco de dados a ser copiado.@s3_arn_to_backup_to
: O ARN que indica o bucket do Amazon S3 a ser usado para o backup, incluindo o nome do arquivo de backup.- O arquivo pode ter qualquer extensão, mas
.bak
é comumente usado.
- O arquivo pode ter qualquer extensão, mas
Parâmetros Opcionais
-
@kms_master_key_arn
- O ARN da chave de criptografia simétrica KMS a ser usada para criptografar o backup.
- Você não pode usar a chave de criptografia padrão. Usar a chave padrão resultará em falha no backup.
- Se você não especificar uma chave KMS, o arquivo de backup não será criptografado.
- Apenas chaves KMS simétricas são suportadas.
-
@overwrite_s3_backup_file
- Determina se deve sobrescrever um arquivo existente.
0
(padrão): Não sobrescreve um arquivo existente. Retorna um erro se o arquivo já existir.1
: Sobrescreve o arquivo existente, mesmo que não seja um arquivo de backup.
-
@tipo
- Especifica o tipo de backup.
COMPLETO
(padrão): Realiza um backup completo.DIFERENCIAL
: Cria um backup diferencial com base no último backup completo.- Importante: Para que os backups diferenciais funcionem, não deve existir nenhum snapshot entre o último backup completo e o backup diferencial. Se um snapshot existir, realize outro backup completo antes do backup diferencial. Abaixo está uma consulta de exemplo para verificar o último backup completo:
MS SQL
select top 1
nome_do_banco_de_dados,
data_inicio_backup,
data_fim_backup
from msdb.dbo.backupset
where nome_do_banco_de_dados = 'meubanco'
and tipo = 'D'
order by data_inicio_backup desc;
-
@number_of_files
- Especifica o número de arquivos (pedaços) nos quais o backup será dividido. Máximo: 10.
- Se definido como
1
ou omitido, um único arquivo de backup é criado. - Backups multifile devem usar um único
*
no nome do arquivo, que será substituído por strings alfanuméricas durante a geração. Por exemplo:- Entrada:
backup*.bak
,@number_of_files = 4
- Saída:
backup1-de-4.bak
,backup2-de-4.bak
,backup3-de-4.bak
,backup4-de-4.bak
- Entrada:
-
@block_size
- Especifica o tamanho do bloco físico (em bytes) para operações de backup.
- Valores válidos:
512
,1024
,2048
,4096
,8192
,16384
,32768
,65536
.
-
@max_transfer_size
- Indica a quantidade máxima de dados (em bytes) transferida por operação de E/S.
- Valores válidos: Múltiplos de
65536
bytes até4194304
bytes (4 MB).
-
@buffer_count
- Número total de buffers de E/S usados durante o processo de backup.
Sintaxe do Comando
exec msdb.dbo.rds_backup_database
@source_db_name = 'database_name',
@s3_arn_to_backup_to = 'arn:aws:s3:::bucket_name/file_name.extension',
[@kms_master_key_arn = 'arn:aws:kms:region:account-id:key/key-id'],
[@overwrite_s3_backup_file = 0|1],
[@block_size = 512|1024|2048|4096|8192|16384|32768|65536],
[@max_transfer_size = n],
[@buffer_count = n],
[@type = 'DIFFERENTIAL|FULL'],
[@number_of_files = n];
Exemplo: Backup Completo para S3
exec msdb.dbo.rds_backup_database
@source_db_name = 'MyDatabase',
@s3_arn_to_backup_to = 'arn:aws:s3:::mybucket/MyDatabase_backup_full.bak',
@overwrite_s3_backup_file = 1,
@type = 'FULL';
Configurando a Compressão do Backup
Para economizar espaço e reduzir o tempo de transferência, você pode habilitar a compressão para backups do SQL Server RDS usando os comandos rdsadmin
.
Habilitar compressão
exec rdsadmin..rds_set_configuration 'S3 backup compression', 'true';
Desativar a Compressão
exec rdsadmin..rds_set_configuration 'S3 backup compression', 'false';
Nota: O SQL Express não suporta compressão de backup; habilitar em tais casos resultará em falha de backup.
Realizando Backups Nativos do SQL Server
O Amazon RDS também suporta a funcionalidade de backup nativo do SQL Server. Abaixo estão os comandos para operações de backup e restauração.
Comandos de Backup
Comando de Backup Completo
exec msdb.dbo.rds_backup_database
@source_db_name = 'MyDatabase',
@s3_arn_to_backup_to = 'arn:aws:s3:::mybucket/MyDatabase_backup_diff.bak',
@overwrite_s3_backup_file = 1,
@type = 'FULL';
Comando de Backup Diferencial
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/differential_backup*.bak',
@type='DIFFERENTIAL',
@number_of_files=4;
Comando de Restauração
Comando de Restauração Diferencial
exec msdb.dbo.rds_restore_database
@restore_db_name = 'MyDatabase',
@s3_arn_to_restore_from = 'arn:aws:s3:::mybucket/MyDatabase_backup_full.bak',
@type = 'FULL';
Comando de Restauração Diferencial
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@type='DIFFERENTIAL',
@with_norecovery=1;
Monitorando e Gerenciando Tarefas de Backup
Verificar o status da tarefa:
exec msdb.dbo.rds_task_status @db_name = 'MyDatabase';
Cancelar uma tarefa de backup:
exec msdb.dbo.rds_cancel_task @task_id = 1234;
Considerações
- Assegure-se de que o bucket S3 usado nos comandos tenha as permissões necessárias para permitir o acesso a partir da instância RDS.
- Para dados sensíveis, você pode usar uma chave mestra AWS KMS para criptografar os backups antes de armazená-los no S3 especificando
@kms_master_key_arn
.
Recursos Adicionais
Para exemplos e informações mais detalhadas, consulte a documentação oficial da AWS sobre backups do SQL Server.
Este guia oferece uma base sólida para gerenciar backups do SQL Server RDS com o Amazon S3. Para configurações mais avançadas, consulte a documentação da AWS ou experimente os parâmetros fornecidos para ajustar o processo de backup de acordo com seu ambiente.
Source:
https://dzone.com/articles/how-to-backup-sql-server-rds-to-an-s3-bucket