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

上次更新时间:2020 年 11 月 9 日

我想为运行 SQL Server 的 Amazon Relational Database Service (Amazon RDS) 数据库实例中的数据库执行本机备份。我需要将备份文件存储在 Amazon Simple Storage Service (Amazon S3) 中,或将数据库备份文件还原到相同或不同的 RDS SQL Server 数据库实例。该如何操作?

简短描述

Amazon RDS 支持 Microsoft SQL Server 数据库的本机备份和还原。您可以创建本地数据库的完整备份并将文件存储在 Amazon S3 中。然后,您可以将备份文件还原到某个运行 SQL Server 的现有 Amazon RDS 数据库实例。您还可以将此备份文件还原到本地服务器或者运行 SQL Server 的另一个 Amazon RDS 数据库实例中。

解决方法

要设置 SQL Server 数据库的本机备份,请使用下列服务:

  • 用于存储备份文件的 Amazon S3 存储桶
  • 用于访问存储桶的 AWS Identity and Access Management (IAM) 角色
  • 已添加到数据库实例中的选项组的 SQLSERVER_BACKUP_RESTORE 选项

注意:在与 RDS 数据库实例相同的区域中创建 S3 存储桶。

  1. 打开 Amazon RDS 控制台,然后在导航窗格中选择 Option Groups(选项组)。选择 Create Group(创建组),然后输入服务器的名称、描述、引擎和引擎版本。然后,选择 Create(创建)。
  2. 选择您创建的选项组,然后选择 Add Option(添加选项)。选择 SQLSERVER_BACKUP_RESTORE。最佳做法是,创建一个新的 IAM 角色,然后选择 Add Option(添加选项),从而使您的 IAM 角色具有所需权限。选择您的 S3 存储桶,或者创建新的 S3 存储桶。然后选择 Apply Immediately(立即应用)和 Add Option(添加选项)。
  3. 在导航窗格中选择 Databases(数据库),从而将选项组与数据库实例关联,然后选择要备份的实例。选择 Actions(操作),然后选择 Modify(修改)。
  4. Database Options(数据库选项)下,选择您创建的选项组,然后选择 Apply Immediately(立即应用)和 Continue(继续)。检查信息,然后选择 Modify DB Instance(修改数据库实例)。由于不需要实例重启,此选项组修改没有停机时间
  5. 当状态从 modifying(正在修改)变为 available(可用)时,通过 SQL Server Management Studio 连接数据库实例,然后选择 New Query(新查询)。输入以下 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-id 和 、key-id,以匹配您的场景。您可以使用 S3 存储桶中生成的备份文件,从而将用户数据库还原到新的 RDS 数据库实例。当调用 rds_backup_databaserds_restore_database 存储程序时,任务开始并输出该任务的相关信息。

当任务的生命周期状态为 SUCCESS(成功)时,任务完成。然后您可以打开 Amazon S3 控制台,选择您创建用户数据库备份所在的存储桶并查看备份文件。您可以下载此文件,也可以使用用户数据库备份文件以还原到相同的 RDS SQL Server 数据库实例或新的 RDS 数据库实例中。

使用以下 SQL 语句之一从 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

有关潜在错误和解决方法的列表,请参阅将 Microsoft SQL Server 企业版工作负载迁移到 Amazon RDS


这篇文章对您有帮助吗?


您是否需要账单或技术支持?