Usar o backup e restauração nativos - Amazon Relational Database Service

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:::bucket_name/file_name.extension. O Amazon S3 não exige um número de conta ou região da AWS nos ARNs.

Se você também fornecer uma chave do KMS opcional, o formato do ARN da chave será arn:aws:kms:region:account-id:key/key-id. 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.

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 parte file_name do ARN do S3. O asterisco é substituído por uma série de strings alfanuméricas nos arquivos gerados, começando com 1-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ão backup1-of-4.bak, backup2-of-4.bak, backup3-of-4.bak e backup4-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 ou 1.

    • 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ão DIFFERENTIAL e FULL. 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 chamando rds_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

task_id

O ID da tarefa.

task_type

Tipo de tarefa, dependendo dos parâmetros de entrada, conforme segue:

  • Para tarefas de backup:

    • BACKUP_DB – backup completo do banco de dados

    • BACKUP_DB_DIFFERENTIAL – backup diferencial de banco de dados

  • Para tarefas de restauração:

    • RESTORE_DB – restauração completa de banco de dados com RECOVERY

    • RESTORE_DB_NORECOVERY – restauração completa de banco de dados com NORECOVERY

    • RESTORE_DB_DIFFERENTIAL – restauração diferencial de banco de dados com RECOVERY

    • RESTORE_DB_DIFFERENTIAL_NORECOVERY – restauração diferencial de banco de dados com NORECOVERY

    • RESTORE_DB_LOG – restauração de log com RECOVERY

    • RESTORE_DB_LOG_NORECOVERY – restauração de log com NORECOVERY

  • Para tarefas que concluem uma restauração:

    • FINISH_RESTORE – concluir a restauração e abrir o banco de dados

Amazon RDS cria um snapshot inicial do banco de dados após ser aberto mediante a conclusão das seguintes tarefas de restauração:

  • RESTORE_DB

  • RESTORE_DB_DIFFERENTIAL

  • RESTORE_DB_LOG

  • FINISH_RESTORE

database_name

O nome do banco de dados ao qual a tarefa está associada.

% complete

O progresso da tarefa em valor de porcentagem.

duration (mins)

A quantidade de tempo gasta na tarefa, em minutos.

lifecycle

O status da tarefa. Os possíveis status são os seguintes:

  • CREATED – assim que você chamar rds_backup_database ou rds_restore_database, uma tarefa é criada e o status é definido para CREATED.

  • IN_PROGRESS – após iniciar uma tarefa de backup ou restauração, o status será definido como IN_PROGRESS. Pode demorar até 5 minutos para que o status mude de CREATED para IN_PROGRESS.

  • SUCCESS – após concluir uma tarefa de backup ou restauração, o status será definido como SUCCESS.

  • ERROR – se houver falha em uma tarefa de backup ou restauração, o status será definido como ERROR. Para obter mais informações sobre o erro, consulte a coluna task_info.

  • CANCEL_REQUESTED – assim que você chamar rds_cancel_task, o status da tarefa será definido como CANCEL_REQUESTED.

  • CANCELLED – após uma tarefa ter sido cancelada com sucesso, o status da tarefa será definido como CANCELLED.

task_info

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.

last_updated

A data e hora em que o status da tarefa foi atualizado pela última vez. O status é atualizado a cada 5% de progresso.

created_at

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.

overwrite_s3_backup_file

O valor do parâmetro @overwrite_s3_backup_file especificado ao chamar uma tarefa de backup. Para obter mais informações, consulteRealização de backup de um banco de dados

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