跳至内容

如何将我的 SQL Server 数据库本机备份到 Amazon RDS 并从 Amazon S3 中恢复?

2 分钟阅读
0

我想将我的 SQL Server 数据库本机备份到 Amazon Relational Database Service (Amazon RDS),并将备份文件存储在 Amazon Simple Storage Service (Amazon S3) 中。我还想将备份恢复到运行 SQL Server 的相同或不同的 Amazon RDS 数据库实例。

解决方法

在开始本机备份之前,请确保设置本机备份和恢复
**注意:**Amazon S3 存储桶必须与您的 Amazon RDS 数据库实例位于同一 AWS 区域。

设置 SQL Server 数据库的本机备份

完成以下步骤:

  1. 打开 Amazon RDS 控制台
  2. 在导航窗格中,选择 Option groups(选项组)。
  3. 选择 Create group(创建组),然后输入服务器的名称、描述、引擎和引擎版本。
  4. 选择 Create(创建)。
  5. 选择选项组,然后选择 Add option(添加选项)。
  6. 对于 Option name(选项名称),选择 SQLSERVER_BACKUP_RESTORE
    **注意:**最佳做法是创建新的 AWS Identity and Access Management (IAM) 角色,使该角色具有所需的权限。
  7. 对于 S3 destination(S3 目标),选择您的 S3 存储桶。
  8. 对于 Scheduling(调度),选择 Immediately(立即)。
  9. 选择 Add option(添加选项)。

将选项组与数据库实例相关联

完成以下步骤:

  1. 在导航窗格中,选择 Databases(数据库),然后选择要备份的实例。
  2. 选择 Modify(修改),然后选择 Additional configuration(其他配置)。
  3. 对于 Database options(数据库选项),选择您的选项组,然后选择 Continue(继续)。
  4. 查看 Summary of modifications(修改摘要)。
    **注意:**没有停机时间,因为您无需重启实例即可修改此选项组。
  5. 对于 Schedule modifications(调度修改),选择 Apply immediately(立即应用),然后选择 Modify DB Instance(修改数据库实例)。
  6. 等待状态由 Modifying(正在修改)变为 Available(可用)。

通过 SSMS 连接到数据库实例

完成以下步骤:

  1. db_ownerdb_backupoperator 的身份登录 Microsoft SQL Server Management Studio (SSMS)。
  2. 选择 New Query(新建查询),然后启动数据库备份。
  3. 输入以下 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 替换为您的值。要将用户数据库恢复到新的 Amazon RDS 数据库实例,请使用在 S3 存储桶中生成的备份文件。当您调用 rds_backup_databaserds_restore_database 过程时,该任务会生成有关该任务的信息。

当任务的生命周期状态显示 SUCCESS(成功)时,说明任务已完成。使用 Amazon S3 控制台查看您创建用户数据库备份的存储桶中的备份文件。要恢复数据库实例,请下载 S3 存储桶中的备份文件或使用用户数据库备份文件。您可以将其恢复到相同的 Amazon RDS for SQL Server 数据库实例,也可以恢复到新的 Amazon RDS 数据库实例。还可以将此备份文件恢复到本地服务器或运行 SQL Server 的其他 Amazon RDS 数据库实例。有关详细信息,请参阅 Microsoft 网站上的快速入门: 使用 SSMS 备份和还原 SQL Server 数据库

要从 S3 存储桶中的备份文件恢复,请使用以下 SQL 语句之一。

要恢复未加密的数据库,请运行以下语句:

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';

**注意:**在上述语句中,将 database_namebucket_namefile_name_and_extensionregionaccount-idkey-id 替换为您的值。

要跟踪备份或恢复语句的进度,可以在输出中获取任务 ID。或者,您可以使用以下语句来识别特定数据库的所有已完成任务和待处理的任务:

exec msdb.dbo.rds\_task\_status @db\_name='database\_name';

**注意:**将 database_name 替换为您的数据库名称。

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

exec msdb.dbo.rds\_task\_status @task\_id=5;

有关您可能遇到的错误及其解决方案的信息,请参阅 Migrating Microsoft SQL Server Enterprise workloads to Amazon RDS(将 Microsoft SQL Server Enterprise 工作负载迁移到 Amazon RDS)

相关信息

Introduction to backups

Backing up, restoring, and exporting data

Importing and exporting SQL Server databases using native backup and restore