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 orienta você sobre os comandos e configurações necessários para realizar backups e restaurações.
Fazendo Backup do SQL Server RDS no S3
O procedimento armazenado principal usado para criar backups é msdb.dbo.rds_backup_database
. Esse 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 para a 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á um exemplo de consulta para verificar o último backup completo:
MS SQL
select top 1
nome_do_banco_de_dados,
data_inicial_do_backup,
data_final_do_backup
from msdb.dbo.backupset
where nome_do_banco_de_dados = 'meubanco'
and tipo = 'D'
order por data_inicial_do_backup desc;
-
@number_of_files
- Especifica o número de arquivos (partes) em que 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-of-4.bak
,backup2-of-4.bak
,backup3-of-4.bak
,backup4-of-4.bak
- Entrada:
-
@tamanho_bloco
- 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
.
-
@tamanho_max_transferencia
- Denota a quantidade máxima de dados (em bytes) transferidos por operação de I/O.
- Valores válidos: Múltiplos de
65536
bytes até4194304
bytes (4 MB).
-
@contagem_buffer
- Número total de buffers de I/O utilizados 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 Compressão de 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 Compactação
exec rdsadmin..rds_set_configuration 'S3 backup compression', 'false';
Nota: O SQL Express não suporta compactação de backup; habilitar isso em tais casos resultará em falha no 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
Verifique 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 o seu ambiente.
Source:
https://dzone.com/articles/how-to-backup-sql-server-rds-to-an-s3-bucket