Usar o backup e restauração nativos
Depois de habilitar e configurar o backup e a restauração nativos, você pode começar a usá-los. Primeiro, conecte-se ao banco de dados do Microsoft SQL Server e chame um procedimento armazenado do Amazon RDS para fazer o trabalho. Para obter instruções sobre como se conectar ao banco de dados, consulte Conectar-se a uma instância de banco de dados executando o mecanismo de banco de dados Microsoft SQL Server.
Alguns dos procedimentos armazenados exigem que você forneça um nome de recurso da Amazon (ARN) ao bucket e arquivo do Amazon S3. O formato do ARN é arn:aws:s3:::
. O Amazon S3 não exige um número de conta ou região da AWS nos ARNs.bucket_name
/file_name.extension
Se você também fornecer uma chave do KMS opcional, o formato do ARN da chave será arn:aws:kms:
. Para obter mais informações, consulte Nomes de recurso da Amazon (ARNs) e namespaces de serviço da AWS. É necessário usar uma chave do KMS de criptografia simétrica para criptografar seus backups. O Amazon RDS não oferece suporte para chaves do KMS assimétricas. Para obter mais informações, consulte Criar chaves do KMS simétricas no Guia do desenvolvedor da AWS Key Management Service.region
:account-id
:key/key-id
nota
Independentemente de você usar ou não uma chave do KMS, as tarefas nativas de backup e restauração habilitam a criptografia Advanced Encryption Standard (AES) de 256 bits no lado do servidor por padrão para arquivos carregados no S3.
Para instruções sobre como chamar cada procedimento armazenado, consulte os tópicos a seguir:
Realização de backup de um banco de dados
Para fazer backup de seu banco de dados, use o procedimento armazenado rds_backup_database
.
nota
Você não pode fazer backup de um banco de dados durante a janela de manutenção ou enquanto o Amazon RDS está tirando um snapshot.
Uso
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
], [@type='DIFFERENTIAL|FULL
'], [@number_of_files=n
];
Os seguintes parâmetros são obrigatórios:
-
@source_db_name
– o nome do banco de dados do qual deve ser feito backup -
@s3_arn_to_backup_to
– o ARN indica o bucket do Amazon S3 a ser usado no backup e o nome do arquivo de backup.O arquivo pode ter qualquer extensão, mas a extensão
.bak
costuma ser usada.
Os seguintes parâmetros são opcionais:
-
@kms_master_key_arn
: o ARN da chave do KMS simétrica a ser usada para criptografar o item.-
Não é possível usar a chave de criptografia padrão. Se você usar a chave padrão, não será feito backup do banco de dados.
-
Se você não especificar um identificador de chave KMS, o arquivo de backup não será criptografado. Para ter mais informações, consulte Criptografar recursos do Amazon RDS.
-
Quando você especifica uma chave do KMS, é usada a criptografia no lado do cliente.
-
O Amazon RDS não oferece suporte para chaves do KMS assimétricas. Para obter mais informações, consulte Criar chaves do KMS simétricas no Guia do desenvolvedor da AWS Key Management Service.
-
-
@overwrite_s3_backup_file
– um valor que indica se deseja substituir um arquivo de backup existente.-
0
– não substitui um arquivo existente. Esse valor é o padrão.Definir
@overwrite_s3_backup_file
como 0 retornará um erro se o arquivo já existir. -
1
– substitui um arquivo existente que tenha o nome especificado, ainda que ele não seja um arquivo de backup.
-
-
@type
– o tipo de backup.-
DIFFERENTIAL
– faz backup diferencial. -
FULL
– faz backup completo. Esse valor é o padrão.
Um backup diferencial baseia-se no último backup completo. Para que os backups diferenciais funcionem, você não pode obter um snapshot entre o último backup completo e o backup diferencial. Se desejar um backup diferencial, mas houver um snapshot, faça outro backup completo antes de continuar com o backup diferencial.
É possível procurar o último backup ou snapshot completo usando o seguinte exemplo de consulta SQL:
select top 1 database_name , backup_start_date , backup_finish_date from msdb.dbo.backupset where database_name='
mydatabase
' and type = 'D
' order by backup_start_date desc; -
-
@number_of_files
– O número de arquivos em que o backup será dividido (em blocos). O número máximo é 10.-
O backup de vários arquivos é compatível com backups completos e diferenciais.
-
Se você inserir um valor de 1 ou omitir o parâmetro, um único arquivo de backup será criado.
Forneça o prefixo que os arquivos têm em comum e depois o sufixo com um asterisco (
*
). O asterisco pode estar em qualquer lugar na partefile_name
do ARN do S3. O asterisco é substituído por uma série de strings alfanuméricas nos arquivos gerados, começando com1-of-
.number_of_files
Por exemplo, se os nomes de arquivo no ARN do S3 forem
backup*.bak
e você definir@number_of_files=4
, os arquivos de backup gerados serãobackup1-of-4.bak
,backup2-of-4.bak
,backup3-of-4.bak
ebackup4-of-4.bak
.-
Se algum dos nomes de arquivo já existir e
@overwrite_s3_backup_file
for 0, um erro será retornado. -
Os backups de vários arquivos só podem ter um asterisco na parte
file_name
do ARN do S3. -
Os backups de arquivo único podem ter qualquer número de asteriscos na parte
file_name
do ARN do S3. Os asteriscos não são removidos do nome do arquivo gerado.
-
Exemplos
exemplo de backup diferencial
exec msdb.dbo.rds_backup_database @source_db_name='
mydatabase
', @s3_arn_to_backup_to='arn:aws:s3:::mybucket
/backup1.bak
', @overwrite_s3_backup_file=1
, @type='DIFFERENTIAL
';
exemplo de backup completo com criptografia
exec msdb.dbo.rds_backup_database @source_db_name='
mydatabase
', @s3_arn_to_backup_to='arn:aws:s3:::mybucket
/backup1.bak
', @kms_master_key_arn='arn:aws:kms:us-east-1
:123456789012
:key/AKIAIOSFODNN7EXAMPLE
', @overwrite_s3_backup_file=1
, @type='FULL
';
exemplo de backup de vários arquivos
exec msdb.dbo.rds_backup_database @source_db_name='
mydatabase
', @s3_arn_to_backup_to='arn:aws:s3:::mybucket
/backup*.bak
', @number_of_files=4
;
exemplo de backup diferencial de vários arquivos
exec msdb.dbo.rds_backup_database @source_db_name='
mydatabase
', @s3_arn_to_backup_to='arn:aws:s3:::mybucket
/backup*.bak
', @type='DIFFERENTIAL
', @number_of_files=4
;
exemplo de backup de vários arquivos com criptografia
exec msdb.dbo.rds_backup_database @source_db_name='
mydatabase
', @s3_arn_to_backup_to='arn:aws:s3:::mybucket
/backup*.bak
', @kms_master_key_arn='arn:aws:kms:us-east-1
:123456789012
:key/AKIAIOSFODNN7EXAMPLE
', @number_of_files=4
;
exemplo de backup de vários arquivos com substituição do S3
exec msdb.dbo.rds_backup_database @source_db_name='
mydatabase
', @s3_arn_to_backup_to='arn:aws:s3:::mybucket
/backup*.bak
', @overwrite_s3_backup_file=1, @number_of_files=4
;
exemplo de backup de arquivo único com o parâmetro @number_of_files
Este exemplo gera um arquivo de backup chamado backup*.bak
.
exec msdb.dbo.rds_backup_database @source_db_name='
mydatabase
', @s3_arn_to_backup_to='arn:aws:s3:::mybucket
/backup*.bak
', @number_of_files=1;
Restaurar um banco de dados
Para fazer restaurar seu banco de dados, chame o procedimento armazenado rds_restore_database
. O Amazon RDS cria um snapshot inicial do banco de dados após a conclusão da tarefa de restauração, e o banco de dados é aberto.
Uso
exec msdb.dbo.rds_restore_database @restore_db_name='
database_name
', @s3_arn_to_restore_from='arn:aws:s3:::bucket_name
/file_name.extension
', @with_norecovery=0|1
, [@kms_master_key_arn='arn:aws:kms:region
:account-id
:key/key-id
'], [@type='DIFFERENTIAL|FULL
'];
Os seguintes parâmetros são obrigatórios:
-
@restore_db_name
– o nome do banco de dados a ser restaurado. Os nomes de banco de dados são exclusivos. Não é possível restaurar um banco de dados com o mesmo nome de um banco de dados já existente. -
@s3_arn_to_restore_from
– o ARN que indica o prefixo do Amazon S3 e os nomes dos arquivos de backup usados para restaurar o banco de dados.-
Para o backup de um único arquivo, forneça o nome inteiro do arquivo.
-
Para um backup de vários arquivos, forneça o prefixo que os arquivos têm em comum e depois acrescente um sufixo com um asterisco (
*
). -
Se
@s3_arn_to_restore_from
estiver vazio, a seguinte mensagem de erro será retornada:O prefixo do ARN do S3 não pode estar vazio
.
-
O seguinte parâmetro é necessário para restaurações diferenciais, mas opcional para restaurações completas:
-
@with_norecovery
– a cláusula de recuperação a ser usada para a operação de restauração.-
Defina como
0
para restauração com RECOVERY. Nesse caso, o banco de dados está on-line após a restauração. -
Defina como
1
para restauração com NORECOVERY. Nesse caso, o banco de dados permanece no estado RESTORING após a conclusão da tarefa de restauração. Com essa abordagem, você pode fazer restaurações diferenciais posteriores. -
Para restaurações DIFFERENTIAL, especifique
0
ou1
. -
Para restaurações
FULL
, esse valor padrão é0
.
-
Os seguintes parâmetros são opcionais:
-
@kms_master_key_arn
: se você criptografou o arquivo de backup, será a chave do KMS a ser usada para descriptografar o arquivo.Quando você especifica uma chave do KMS, é usada a criptografia no lado do cliente.
-
@type
– o tipo de restauração. Os tipos válidos sãoDIFFERENTIAL
eFULL
. O valor padrão éFULL
.
nota
Para restaurações diferenciais, o banco de dados deve estar no estado RESTORING ou uma tarefa de restauração com NORECOVERY já deve existir.
Você não pode restaurar backups diferenciais posteriores enquanto o banco de dados estiver on-line.
Não é possível enviar uma tarefa de restauração para um banco de dados que já tenha uma tarefa de restauração pendente com RECOVERY.
Não há suporte para restaurações completas com NORECOVERY e restaurações diferenciais em instâncias multi-AZ.
Restaurar um banco de dados em uma instância multi-AZ com réplicas de leitura é semelhante a restaurar um banco de dados em uma instância multi-AZ. Você não precisa executar nenhuma ação adicional para restaurar um banco de dados em uma réplica.
Exemplos
exemplo de restauração de único arquivo
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak';
exemplo de restauração de vários arquivos
Para evitar erros ao restaurar vários arquivos, certifique-se de que todos os arquivos de backup tenham o mesmo prefixo e que nenhum outro arquivo use esse prefixo.
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup*';
exemplo de restauração completa de banco de dados com RECOVERY
Os três exemplos a seguir executam a mesma tarefa, restauração completa com RECOVERY.
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak';
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', [@type='
DIFFERENTIAL|FULL
'];
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', @type='FULL', @with_norecovery=0;
exemplo de restauração completa de banco de dados com criptografia
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', @kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE';
exemplo de restauração completa de banco de dados com NORECOVERY
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', @type='FULL', @with_norecovery=1;
exemplo de restauração diferencial com NORECOVERY
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;
exemplo de restauração diferencial com RECOVERY
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=0;
Restaurar um log
Para restaurar seu log, chame o procedimento armazenado rds_restore_log
.
Uso
exec msdb.dbo.rds_restore_log @restore_db_name='
database_name
', @s3_arn_to_restore_from='arn:aws:s3:::bucket_name
/log_file_name.extension
', [@kms_master_key_arn='arn:aws:kms:region
:account-id
:key/key-id
'], [@with_norecovery=0|1
], [@stopat='datetime
'];
Os seguintes parâmetros são obrigatórios:
-
@restore_db_name
– o nome do banco de dados cujo log deve ser restaurado. -
@s3_arn_to_restore_from
– o ARN indicando o prefixo do Amazon S3 e o nome do arquivo de log usado para restaurar o log. O arquivo pode ter qualquer extensão, mas a extensão.trn
costuma ser usada.Se
@s3_arn_to_restore_from
estiver vazio, a seguinte mensagem de erro será retornada:O prefixo do ARN do S3 não pode estar vazio
.
Os seguintes parâmetros são opcionais:
-
@kms_master_key_arn
: se você criptografou o log, será a chave do KMS a ser usada para descriptografar o log. -
@with_norecovery
– a cláusula de recuperação a ser usada para a operação de restauração. Esse valor padrão é1
.-
Defina como
0
para restauração com RECOVERY. Nesse caso, o banco de dados está on-line após a restauração. Você não pode restaurar backups de log adicionais enquanto o banco de dados estiver on-line. -
Defina como
1
para restauração com NORECOVERY. Nesse caso, o banco de dados permanece no estado RESTORING após a conclusão da tarefa de restauração. Com essa abordagem, você pode fazer restaurações de log posteriores.
-
-
@stopat
– um valor que especifica que o banco de dados seja restaurado ao seu estado na data e hora especificadas (no formato de data e hora). Somente registros de log de transações gravados antes da data e hora especificadas são aplicados ao banco de dados.Se esse parâmetro não for especificado (é NULL), o log completo será restaurado.
nota
Para restaurações de log, o banco de dados deve estar em um estado de restauração ou uma tarefa de restauração com NORECOVERY já deve existir.
Você não pode restaurar backups de log enquanto o banco de dados estiver on-line.
Não é possível enviar uma tarefa de restauração de log em um banco de dados que já tenha uma tarefa de restauração pendente com RECOVERY.
Não há suporte para restaurações de log em instâncias multi-AZ.
Exemplos
exemplo de restauração de log
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn';
exemplo de restauração de log com criptografia
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn', @kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE';
exemplo de restauração de log com NORECOVERY
Os dois exemplos a seguir executam a mesma tarefa, restauração de log com NORECOVERY.
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn', @with_norecovery=1;
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn';
exemplo de restauração de log com RECOVERY
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn', @with_norecovery=0;
exemplo de restauração de log com cláusula STOPAT
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn', @with_norecovery=0, @stopat='2019-12-01 03:57:09';
Concluir uma restauração de banco de dados
Se a última tarefa de restauração no banco de dados tiver sido executada usando @with_norecovery=1
, o estado do banco de dados será RESTORING. Abra esse banco de dados para operação normal usando o procedimento armazenado rds_finish_restore
.
Uso
exec msdb.dbo.rds_finish_restore @db_name='
database_name
';
nota
Para usar essa abordagem, o estado do banco de dados deve ser RESTORING sem nenhuma tarefa de restauração pendente.
Não há suporte para o procedimento rds_finish_restore
em instâncias multi-AZ.
Para concluir a restauração do banco de dados, use o login mestre. Ou use o login do usuário que realizou a última restauração do banco de dados ou faça login com NORECOVERY.
Como trabalhar com bancos de dados parcialmente restaurados
Descartando um banco de dados parcialmente restaurado
Para descartar um banco de dados parcialmente restaurado (deixado no estado RESTORING), use o procedimento armazenado rds_drop_database
.
exec msdb.dbo.rds_drop_database @db_name='
database_name
';
nota
Não é possível enviar uma solicitação de banco de dados DROP para um banco de dados que já tenha uma tarefa de restauração pendente, tampouco concluir a tarefa de restauração.
Para descartar o banco de dados, use o login mestre: Ou use o login do usuário que realizou a última restauração do banco de dados ou faça login com NORECOVERY.
Restauração de snapshot e comportamento de recuperação em um ponto anterior no tempo para bancos de dados parcialmente restaurados
Os bancos de dados parcialmente restaurados na instância de origem (deixados no estado RESTORING) são descartados da instância de destino durante a restauração do snapshot e a recuperação em um ponto anterior no tempo.
Cancelar uma tarefa
Para cancelar uma tarefa de backup ou restauração, chame o procedimento armazenado rds_cancel_task
.
nota
Você não pode cancelar uma tarefa FINISH_RESTORE.
Uso
exec msdb.dbo.rds_cancel_task @task_id=
ID_number
;
O seguinte parâmetro é obrigatório:
-
@task_id
– o ID da tarefa a ser cancelada. Você pode obter o ID da tarefa chamandords_task_status
.
Acompanhar o status de tarefas
Para acompanhar o status de suas tarefas de backup e restauração, chame o procedimento armazenado rds_task_status
. Se você não fornecer nenhum parâmetro, o procedimento armazenado retornará o status de todas as tarefas. O status das tarefas é atualizado aproximadamente a cada dois minutos. O histórico de tarefas é mantido por 36 dias.
Uso
exec msdb.dbo.rds_task_status [@db_name='
database_name
'], [@task_id=ID_number
];
Os seguintes parâmetros são opcionais:
-
@db_name
– o nome do banco de dados do qual o status será exibido. -
@task_id
– o nome do ID da tarefa do qual o status será exibido.
Exemplos
exemplo de listagem do status de uma tarefa específica
exec msdb.dbo.rds_task_status @task_id=5;
exemplo de listagem do status de uma tarefa e banco de dados específicos
exec msdb.dbo.rds_task_status @db_name='my_database', @task_id=5;
exemplo de listagem de todas as tarefas e seus status em um banco de dados específico
exec msdb.dbo.rds_task_status @db_name='my_database';
exemplo de listagem de todas as tarefas e seus status na instância atual
exec msdb.dbo.rds_task_status;
Resposta
O procedimento armazenado rds_task_status
retorna as colunas a seguir.
Coluna | Descrição |
---|---|
|
O ID da tarefa. |
|
Tipo de tarefa, dependendo dos parâmetros de entrada, conforme segue:
Amazon RDS cria um snapshot inicial do banco de dados após ser aberto mediante a conclusão das seguintes tarefas de restauração:
|
|
O nome do banco de dados ao qual a tarefa está associada. |
|
O progresso da tarefa em valor de porcentagem. |
|
A quantidade de tempo gasta na tarefa, em minutos. |
|
O status da tarefa. Os possíveis status são os seguintes:
|
|
Informações adicionais sobre a tarefa. No caso de erro durante o backup ou a restauração de um banco de dados, esta coluna contém as informações sobre o erro. Para obter uma lista de possíveis erros e estratégias de mitigação, consulte Solução de problemas. |
|
A data e hora em que o status da tarefa foi atualizado pela última vez. O status é atualizado a cada 5% de progresso. |
|
A data e hora em que a tarefa foi criada. |
S3_object_arn |
O ARN indicando o prefixo do Amazon S3 e o nome do arquivo que está sendo copiado ou restaurado. |
|
O valor do parâmetro |
KMS_master_key_arn |
O ARN para a chave do KMS usada para criptografia (para backup) e descriptografia (para restauração). |
filepath |
Não aplicável a tarefas de backup e restauração nativos |
overwrite_file |
Não aplicável a tarefas de backup e restauração nativos |