使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

如何为运行 SQL Server 的 Amazon RDS 数据库实例执行本机备份?

2 分钟阅读
0

我想了解如何在 Amazon RDS 上对 SQL Server 数据库进行本机备份,并将备份文件存储在 Amazon S3 中。我想知道如何将这些备份恢复到运行着 SQL Server 的相同或不同的 RDS 数据库实例。

简短描述

通过 Amazon RDS 备份,可以将备份文件存储在 Amazon Simple Storage Service (Amazon S3) 中。还可以使用数据库备份文件将其还原到相同或不同的 Amazon RDS for SQL Server 数据库实例。

Amazon RDS 支持 Microsoft SQL Server 数据库的本机备份和还原。您可以创建本地数据库的完整备份并将文件存储在 Amazon S3 中。然后,您可以将备份文件还原到运行 SQL Server 的现有 Amazon RDS 数据库实例。还可以将此备份文件还原到本地服务器或运行 SQL Server 的其他 Amazon RDS 数据库实例。有关更多信息,请参阅 Microsoft 网站上的 Restore a backup

解决方法

在开始本机备份之前,请确保拥有以下组件:

要设置 SQL Server 数据库的本机备份,请执行以下步骤:

  1. 打开 Amazon RDS 控制台,然后在导航窗格中选择选项组
  2. 选择创建组,然后输入服务器的名称、描述、引擎和引擎版本。
  3. 选择创建
  4. 选择创建的选项组,然后选择添加选项
  5. 选择 SQLSERVER_BACKUP_RESTORE。最佳做法是创建一个新的 IAM 角色,然后选择添加选项,让 IAM 角色具备所需权限。
  6. 选择您的 Amazon S3 存储桶或创建新的 S3 存储桶。
  7. 然后,选择立即应用添加选项
  8. 在导航窗格中选择数据库,将选项组与数据库实例关联,然后选择要备份的实例。
  9. 选择操作,然后选择修改
  10. 数据库选项下,选择您创建的选项组,然后选择立即应用继续
  11. 查看信息,然后选择修改数据库实例。此选项组修改没有停机时间,因为不需要重启实例。
  12. 等待状态从正在修改变为可用。然后,要通过 SQL Server Management Studio 连接到数据库实例,请使用 RDS 实例的主用户。
  13. 然后,选择新建查询并输入以下任一 SQL 语句以启动目标数据库备份:

启动未加密数据库的备份

exec msdb.dbo.rds_backup_database @source_db_name='database_name', @s3_arn_to_backup_to='arn:aws:s3:::bucket_name/file_name_and_extension',
@overwrite_S3_backup_file=1;

启动加密数据库的备份

exec msdb.dbo.rds_backup_database @source_db_name='database_name',
@s3_arn_to_backup_to='arn:aws:s3:::bucket_name/file_name_and_extension',  
@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id',
@overwrite_S3_backup_file=1;

**注意:**根据您的使用场景,将这些示例中列出的 database_name、bucket_name、file_name_and_extension、region、account-idkey-id 替换为您的相应内容。可以使用在 S3 存储桶中生成的备份文件将用户数据库还原到新的 RDS 数据库实例。调用 rds_backup_databaserds_restore_database 存储过程时,任务会启动并输出有关该任务的信息。

当任务的生命周期状态为 SUCCESS 时,说明任务已完成。可以打开 Amazon S3 控制台,选择创建了用户数据库备份的存储桶并查看备份文件。要还原数据库实例,请下载此文件或使用用户数据库备份文件。可以还原到相同的 Amazon RDS for SQL Server 数据库实例或新的 RDS 数据库实例。

使用以下一种 SQL 语句,从 Amazon S3 存储桶中可用的备份文件中还原

还原未加密的数据库

exec msdb.dbo.rds_restore_database @restore_db_name='database_name',
@s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name_and_extension';

还原加密的数据库

exec msdb.dbo.rds_restore_database @restore_db_name='database_name',
@s3_arn_to_restore_from='arn:aws:s3::: bucket_name/file_name_and_extension',
@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id';

执行备份或还原语句后,即可获得任务 ID。或者,您可以使用以下脚本来识别特定数据库的所有已完成任务和待处理的任务:

exec msdb.dbo.rds_task_status @db_name='database_name'

要跟踪作业状态,请使用以下 SQL 语句:

exec msdb..rds_task_status @task_id= 5

有关潜在错误和解决方案的清单,请参阅 Migrating Microsoft SQL Server Enterprise workloads to Amazon RDS

相关信息

Introductions to backups

Backing up, restoring, and exporting data

Importing and exporting SQL Server databases using native backup and restore

AWS 官方
AWS 官方已更新 8 个月前