Importar e exportar bancos de dados do SQL Server usando backup e restauração nativos - Amazon Relational Database Service

Importar e exportar bancos de dados do SQL Server usando backup e restauração nativos

O Amazon RDS suporta backup e restauração nativos para bancos de dados do Microsoft SQL Server usando arquivos de backup completo (arquivos .bak). Ao usar o RDS, acesse arquivos armazenados no Amazon S3, em vez de usar o sistema de arquivos local no servidor de banco de dados.

Por exemplo, crie um backup completo no servidor local, armazene-o no S3 e o restaure em uma instância de banco de dados do Amazon RDS existente. Também faça backups do RDS, armazene-os no S3 e os restaure sempre que quiser.

O backup e a restauração nativos estão disponíveis em todas as regiões da AWS para as instâncias de banco de dados Mono-AZ e multi-AZ, incluindo instâncias de banco de dados multi-AZ com réplicas de leitura. O backup e a restauração nativos estão disponíveis para todas as edições do Microsoft SQL Server compatíveis com o Amazon RDS.

O diagrama a seguir mostra os cenários compatíveis.


			Arquitetura de backup e restauração nativos

Usar arquivos .bak nativos para fazer backup e restaurar bancos de dados costuma ser a maneira mais rápida de se fazer backup e restauração de bancos de dados. Há muitas vantagens adicionais em se usar o backup e a restauração nativos. Por exemplo, você pode fazer o seguinte:

  • Migrar bancos de dados para ou de Amazon RDS.

  • Movimentação de bancos de dados entre instâncias de banco de dados do RDS for SQL Server.

  • Migrar dados, esquemas, procedimentos armazenados, disparadores e outros códigos de banco de dados dentro de um arquivo .bak.

  • Fazer backup e restauração de bancos de dados únicos, em vez de instâncias de banco de dados inteiras.

  • Criar cópias de bancos de dados para desenvolvimento, testes, treinamento e demonstrações.

  • Armazenar e transferir arquivos de backup com o Amazon S3, para uma camada adicional de proteção para recuperação de desastres.

  • Crie backups nativos de bancos de dados com Transparent Data Encryption (TDE) ativada e restaure esses backups em bancos de dados on-premises. Para obter mais informações, consulte Suporte para criptografia de dados transparente no SQL Server.

  • Restaure backups nativos de bancos de dados on-premises que têm o TDE ativado para instâncias de banco de dados do RDS para SQL Server. Para obter mais informações, consulte Suporte para criptografia de dados transparente no SQL Server.

Limitações e recomendações

A seguir estão algumas limitações para o uso de backup e restauração nativos:

  • Você não pode fazer backup ou restaurar de um bucket do Amazon S3 em uma região da AWS diferente de sua instância de banco de dados do Amazon RDS.

  • Não é possível restaurar um banco de dados com o mesmo nome de um banco de dados já existente. Os nomes de banco de dados são exclusivos.

  • Recomendamos que não restaure backups de um fuso horário em um fuso horário diferente. Se você restaurar backups de um fuso horário em outro fuso horário, deverá auditar as consultas e aplicativos para verificar os efeitos da alteração do fuso horário.

  • O Amazon S3 tem um limite de tamanho de 5 TB por arquivo. Para backups nativos de bancos de dados maiores, você pode usar o backup de vários arquivos.

  • O tamanho máximo do banco de dados que pode ser feito backup no S3 depende da memória, CPU, E/S e recursos de rede disponíveis na instância de banco de dados. Quanto maior o banco de dados, mais memória o agente de backup consome. Nossos testes mostram que você pode fazer um backup compactado de um banco de dados de 16 TB em nossos tipos de instância de última geração, de tamanhos de instância 2xlarge e maiores, caso tenha recursos suficientes do sistema.

  • Não é possível fazer backup ou restaurar mais de 10 arquivos de backup ao mesmo tempo.

  • 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 manual ou automatizado, faça outro backup completo antes de continuar com o backup diferencial.

  • Restaurações diferenciais e de log não são compatíveis com bancos de dados com arquivos que têm seu file_guid (identificador exclusivo) definido como NULL.

  • Você pode executar até duas tarefas de backup ou restauração ao mesmo tempo.

  • Não é possível executar backups de log nativo do SQL Server no Amazon RDS.

  • O RDS oferece suporte a restaurações nativas de bancos de dados de até 16 TB. Restaurações nativas de bancos de dados no SQL Server Express Edition estão limitadas a 10 GB.

  • Não é possível fazer backup de um banco de dados durante a janela de manutenção, nem enquanto o Amazon RDS estiver no processo de tirar um snapshot do banco de dados. Se uma tarefa nativa de backup se sobrepor à janela diária de backup do RDS, a tarefa nativa de backup será cancelada.

  • Em instâncias de banco de dados multi-AZ, você só pode restaurar de forma nativa os bancos de dados com backup feito no modelo de recuperação completo.

  • Não há suporte para a restauração de backups diferenciais em instâncias multi-AZ.

  • Não há suporte para a chamada dos procedimentos do RDS para backup/restauração dentro de uma transação.

  • Use uma AWS KMS key 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.

  • Os arquivos de backup nativo são criptografados com a chave do KMS especificada usando o modo de criptografia "Encryption-Only". Ao restaurar arquivos de backup criptografados, saiba que eles foram criptografados com o modo de criptografia "Encryption-Only".

  • Não é possível restaurar um banco de dados que contenha um grupo de arquivos FILESTREAM.

Se o banco de dados estiver offline enquanto o arquivo de backup for criado, copiado e restaurado, recomendamos que você use o backup e a restauração nativos para migrar seu banco de dados para o RDS. Se o banco de dados on-premises não puder ficar offline, recomendamos que você use o AWS Database Migration Service para migrar seu banco de dados para o Amazon RDS. Para obter mais informações, consulte O que é o AWS Database Migration Service?

O backup e a restauração nativos não se destinam a substituir os recursos de recuperação de dados do recurso de cópia de snapshot entre regiões. Recomendamos que você use uma cópia do snapshot para copiar o snapshot do banco de dados em outra região da AWS para recuperação de desastres entre regiões no Amazon RDS. Para obter mais informações, consulte Copiar um snapshot de banco de dados.

Configurar o backup e a restauração nativos

Para configurar o backup e a restauração nativos, você precisará de três componentes:

  1. Um bucket do Amazon S3 para armazenar seus arquivos de backup.

    É necessário ter um bucket do S3 para usar nos arquivos de backup e fazer upload dos backups que deseja migrar para o RDS. Se você já tiver um bucket do Amazon S3, você pode usá-lo. Do contrário, crie um bucket. Como alternativa, opte por criar um novo bucket ao adicionar a opção SQLSERVER_BACKUP_RESTORE usando o AWS Management Console.

    Para obter informações sobre como usar o S3, consulte o Guia do usuário do Amazon Simple Storage Service.

  2. Uma função do AWS Identity and Access Management (IAM) para acessar o bucket.

    Se você já tiver uma função do IAM, você pode usá-la. Você pode optar por criar uma nova função do IAM ao adicionar a opção SQLSERVER_BACKUP_RESTORE usando o AWS Management Console. Você também pode criar uma nova manualmente.

    Se você quiser criar uma nova função do IAM manualmente, siga a abordagem discutida na próxima seção. Faça o mesmo se quiser associar relações de confiança e políticas de permissões a uma função existente do IAM.

  3. A opção SQLSERVER_BACKUP_RESTORE adicionada a um grupo de opções em sua instância de banco de dados.

    Para habilitar o backup e restauração nativos em sua instância de banco de dados, adicione a opção SQLSERVER_BACKUP_RESTORE a um grupo de opções em sua instância de banco de dados. Para mais informações e instruções, consulte Suporte para backup e restauração nativos no SQL Server.

Criar manualmente uma função do IAM para backup e restauração nativos

Se você quiser criar manualmente uma nova função do IAM para usar com backup e restauração nativos, poderá fazê-lo. Nesse caso, você criará uma função para delegar permissões do serviço do Amazon RDS ao seu bucket do Amazon S3. Ao criar uma função do IAM, associe uma relação de fidedignidade e uma política de permissões. A relação de confiança permite que o RDS assuma essa função. A política de permissões define as ações que essa função pode executar. Para obter mais informações sobre como criar a função, consulte Criar uma função para delegar permissões a um AWSserviço da .

Para o recurso de backup e restauração nativo, use políticas de confiança e permissões semelhantes aos exemplos nesta seção. No exemplo a seguir, usamos o nome principal do serviço rds.amazonaws.com como um alias para todas as contas de serviço. Em outros exemplos, especificamos um nome de recurso da Amazon (ARN) para identificar outra conta, usuário ou função para a qual estejamos concedendo acesso na política de confiança.

Recomendamos usar as chaves de contexto de condição global aws:SourceArn e aws:SourceAccount em relações baseadas em recursos para limitar as permissões do serviço a um recurso específico. Essa é a maneira mais eficiente de se proteger contra o problema "confused deputy".

Você pode usar as duas chaves de contexto de condição global e fazer com que o valor aws:SourceArn contenha o ID da conta. Nesses casos, verifique se o valor aws:SourceAccount e a conta no aws:SourceArn usa o mesmo ID de conta quando eles são usados na mesma instrução.

  • Use aws:SourceArn se quiser acesso entre serviços para um único recurso.

  • Use aws:SourceAccount se você quiser permitir que qualquer recurso nessa conta seja associado ao uso entre serviços.

Na relação de confiança, certifique-se de usar a chave de contexto de condição global aws:SourceArn com o ARN completo dos recursos que acessam a função. Para backup e restauração nativos, certifique-se de incluir o grupo de opções de banco de dados e as instâncias de banco de dados, conforme mostrado no exemplo a seguir.

exemplo relação de confiança com a chave de contexto de condição global para backup e restauração nativos
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn": [ "arn:aws:rds:Region:my_account_ID:db:db_instance_identifier", "arn:aws:rds:Region:my_account_ID:og:option_group_name" ] } } } ] }

O exemplo a seguir usa um ARN para especificar um recurso. Para obter mais informações sobre como usar ARNs, consulte Nomes de recurso da Amazon (ARNs).

exemplo política de permissões para fazer backup e restauração nativos sem suporte de criptografia
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucket_name" }, { "Effect": "Allow", "Action": [ "s3:GetObjectAttributes", "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::bucket_name/*" } ] }
exemplo política de permissões para fazer backup e restauração nativos com suporte de criptografia

Se quiser criptografar seus arquivos de backup, inclua uma chave de criptografia em sua política de permissões. Para obter mais informações sobre as chaves de criptografia, consulte Getting started (Conceitos básicos) no Guia do desenvolvedor do AWS Key Management Service.

nota

É 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.

A função do IAM também deve ser um usuário de chave e administrador de chave para a chave do KMS, ou seja, ela deve ser especificada na política de chaves. Para obter mais informações, consulte Criar chaves do KMS simétricas no Guia do desenvolvedor da AWS Key Management Service.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:GenerateDataKey", "kms:Encrypt", "kms:Decrypt" ], "Resource": "arn:aws:kms:region:account-id:key/key-id" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucket_name" }, { "Effect": "Allow", "Action": [ "s3:GetObjectAttributes", "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::bucket_name/*" } ] }

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

Compactar arquivos de backup

Para economizar espaço no bucket do Amazon S3, você pode compactar seus arquivos de backup. Para obter mais informações sobre como compactar arquivos de backup, consulte Compactação de backup na documentação da Microsoft.

As seguintes edições de banco de dados oferecem suporte à compactação de arquivos de backup:

  • Microsoft SQL Server Enterprise Edition

  • Microsoft SQL Server Standard Edition

Para ativar a compactação dos arquivos de backup, execute o seguinte código:

exec rdsadmin..rds_set_configuration 'S3 backup compression', 'true';

Para desativar a compactação dos arquivos de backup, execute o seguinte código:

exec rdsadmin..rds_set_configuration 'S3 backup compression', 'false';

Solução de problemas

Os problemas a seguir podem ocorrer ao usar o backup e a restauração nativos.

Problema Sugestões de solução de problemas

A opção de backup/restauração do banco de dados ainda não está habilitada ou está em processo de habilitação. Tente novamente mais tarde.

Verifique se você adicionou a opção SQLSERVER_BACKUP_RESTORE ao grupo de opções de banco de dados associado à sua instância de banco de dados. Para obter mais informações, consulteAdicionar a opção de backup e restauração nativos

Acesso negado

O processo de backup ou restauração não pode acessar o arquivo de backup. Isso geralmente é causado por problemas como o seguinte:

  • Fazer referência ao bucket incorreto. Fazer referência ao bucket usando um formato incorreto. Fazer referência a um nome de arquivo sem usar o ARN.

  • Permissões incorretas no arquivo de bucket. Por exemplo, se ele for criado por uma conta diferente que esteja tentando acessá-lo agora, adicione as permissões corretas.

  • Uma política IAM incorreta ou incompleta. Sua função do IAM deve incluir todos os elementos necessários, incluindo, por exemplo, a versão correta. Eles estão destacados em Importar e exportar bancos de dados do SQL Server usando backup e restauração nativos.

O BANCO DE DADOS DE BACKUP COM COMPACTAÇÃO não tem suporte na edição <edition_name>

A compactação de arquivos de backup só tem suporte no Microsoft SQL Server Enterprise Edition e Standard Edition.

Para obter mais informações, consulte Compactar arquivos de backup.

A chave <ARN> não existe

Você tentou restaurar um backup criptografado, mas não forneceu uma chave de criptografia válida. Confira sua chave de criptografia e tente novamente.

Para obter mais informações, consulte Restaurar um banco de dados.

Reemita a tarefa com o tipo correto e sobrescreva a propriedade

Se você tentar fazer backup de seu banco de dados e fornecer o nome de um arquivo que já existe, mas definir a propriedade de substituição como falso, a operação de salvar falhará. Para corrigir esse erro, forneça o nome de um arquivo que ainda não exista ou defina a propriedade de substituição como verdadeira.

Para obter mais informações, consulte Realização de backup de um banco de dados.

Há casos em que você desejava restaurar seu banco de dados, mas chamou o procedimento armazenado rds_backup_database por engano. Nesse caso, chame o procedimento armazenado rds_restore_database.

Para obter mais informações, consulte Restaurar um banco de dados.

Se você pretendia restaurar seu banco de dados e chamou o procedimento armazenado rds_restore_database, confira se você forneceu o nome de um arquivo de backup válido.

Para obter mais informações, consulte Usar o backup e restauração nativos.

Especifique um bucket que esteja na mesma região que a instância do RDS

Você não pode fazer backup ou restaurar de um bucket do Amazon S3 em uma região da AWS diferente de sua instância de banco de dados do Amazon RDS. Você pode usar a replicação do Amazon S3 para copiar o arquivo de backup na região da AWS correta.

Para obter mais informações, consulte Replicação entre regiões na documentação do Amazon S3.

O bucket especificado não existe

Confirme que você forneceu um o ARN correto para o bucket e o arquivo, no formato correto.

Para obter mais informações, consulte Usar o backup e restauração nativos.

O usuário <ARN> não está autorizado a executar <kms action> no recurso <ARN>

Você solicitou uma operação criptografada, mas não forneceu as permissões de AWS KMS corretas;. Verifique se você tem as permissões corretas, ou adicione-as caso não tenha.

Para obter mais informações, consulte Configurar o backup e a restauração nativos.

A tarefa Restore (Restaurar) não restaura mais de 10 arquivos de backup). Reduza o número de arquivos correspondentes e tente novamente.

Reduza o número de arquivos a partir dos quais você está tentando fazer a restauração. Você poderá tornar cada arquivo individual maior, se for necessário.

O banco de dados “database_name” já existe. Dois bancos de dados que diferem apenas por caso ou acento não são permitidos. Escolha um nome de banco de dados diferente.

Não é possível restaurar um banco de dados com o mesmo nome de um banco de dados já existente. Os nomes de banco de dados são exclusivos.