本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用将 Amazon RDS for SQL Server 表导出到 S3 存储桶 AWS DMS
Subhani Shaik,Amazon Web Services
Summary
适用于 SQL Server 的亚马逊关系数据库服务 (Amazon RDS) 不支持将数据加载到亚马逊网络服务 () 云上的其他数据库 (DB AWS) 引擎链接服务器上。相反,您可以使用 AWS Database Migration Service (AWS DMS) 将 Amazon RDS for SQL Server 表导出到亚马逊简单存储服务 (Amazon S3) Service 存储桶,其他数据库引擎可以在该存储桶中使用数据。
AWS DMS 帮助您 AWS 快速、安全地将数据库迁移到。在迁移过程中,源数据库可以完全运行,从而最大限度地减少依赖该数据库的应用程序的停机时间。 AWS DMS 可以将您的数据迁入和迁出最广泛使用的商业和开源数据库。
此模式 AWS Secrets Manager 在配置 AWS DMS 端点时使用。 服务可帮助您保护访问您的应用程序、服务和 IT 资源所需密钥。您可以使用 Secrets Manager 在数据库凭证、API 密钥和其他密钥的整个生命周期内对其进行轮换、管理和检索。用户和应用程序通过调用 Secrets Manager 来检索机密,从而减少对敏感信息进行硬编码的需要。Secrets Manager 提供密钥轮换,内置集成了亚马逊 RDS、Amazon Redshift 和亚马逊 DocumentDB(兼容 MongoDB)。该服务可扩展至其他类型机密,包括 API 密钥和 OAuth 令牌。借助 Secrets Manager,您可以通过使用细粒度的权限来控制对密钥的访问权限,并集中审核 AWS 云端、第三方服务和本地资源的密钥轮换。
先决条件和限制
先决条件
活跃的 AWS 账户
亚马逊 S3 存储桶
虚拟私有云(VPC)
数据库子网
Amazon RDS for SQL Server
一个 AWS Identity and Access Management (IAM) 角色,可以代表 Amazon RDS 实例访问 S3 存储桶(列出、获取和放置对象)
用于存储 Amazon RDS 实例凭证的 Secrets Manager
架构
技术堆栈
Amazon RDS for SQL Server
AWS DMS
Amazon S3
AWS Secrets Manager
目标架构
下图显示了在的帮助下将数据从 Amazon RDS 实例导出到 Amazon S3 存储桶的架构 AWS DMS。

通过源终端节点连接到源 Amazon RDS 实例的 AWS DMS 迁移任务
从源 Amazon RDS 实例复制数据
通过目标终端节点连接到目标 Amazon S3 存储桶的 AWS DMS 迁移任务
以逗号分隔值 (CSV) 格式将复制的数据导出到 Amazon S3 存储桶
工具
AWS 服务
AWS Database Migration Service (AWS DMS) 可帮助您将数据存储迁移到云端,或者在 AWS 云端和本地设置的组合之间迁移。
AWS Identity and Access Management (IAM) 通过控制谁经过身份验证并有权使用 AWS 资源,从而帮助您安全地管理对资源的访问权限。
Amazon Relational Database Service (Amazon RDS) 可帮助您在 AWS 云中设置、操作和扩展关系数据库。
Amazon Simple Storage Service(Amazon S3)是一项基于云的对象存储服务,可帮助您存储、保护和检索任意数量的数据。
AWS Secrets Manager 可帮助您将代码中的硬编码凭证(包括密码)替换为对 Secrets Manager 进行的 API 调用,以便以编程方式检索此密钥。
其他工具
Microsoft SQL Server Management Studio (SSMS)
是一款用于管理 SQL Server 的工具,包括访问、配置和管理 SQL Server 组件。
最佳实践
在完全迁移到性能基准测试之前,对一部分表进行概念验证并找出问题。
避免在数据库高峰时段运行 AWS DMS 任务,以减少源 Amazon RDS 实例的负载。
请遵循以下方面的最佳实践 AWS DMS。
遵循 A mazon S3 的最佳安全实践。
操作说明
| Task | 说明 | 所需技能 |
|---|---|---|
创建 Amazon RDS for SQL Server 实例。 |
| 数据库管理员、工程师 DevOps |
设置实例的凭证。 |
| 数据库管理员、工程师 DevOps |
配置实例类别、存储、自动扩缩以及可用性。 |
| 数据库管理员、工程师 DevOps |
指定虚拟私有云(VPC)、子网组、公共访问和安全组。 | 根据需要选择 VPC、数据库子网组和 VPC 安全组创建 Amazon RDS 实例。遵循最佳实践,例如:
| 数据库管理员、工程师 DevOps |
配置监控、备份和维护。 |
| 数据库管理员、工程师 DevOps |
| Task | 说明 | 所需技能 |
|---|---|---|
创建表和加载示例数据。 | 在新数据库中创建一个表。使用其他信息部分中的示例代码将数据加载到表中。 | 数据库管理员、工程师 DevOps |
| Task | 说明 | 所需技能 |
|---|---|---|
创建密钥。 |
此密钥将用于 AWS DMS 源端点。 | 数据库管理员、工程师 DevOps |
| Task | 说明 | 所需技能 |
|---|---|---|
创建 IAM 角色以便访问 Amazon RDS |
| 数据库管理员、工程师 DevOps |
| Task | 说明 | 所需技能 |
|---|---|---|
创建 Amazon S3 存储桶。 | 要保存来自 Amazon RDS for SQL Server 的数据,请在控制台上选择 S3,然后选择创建存储桶。确保 Amazon S3 存储桶未公开发布。 | 数据库管理员、工程师 DevOps |
| Task | 说明 | 所需技能 |
|---|---|---|
为创建 IAM 角色 AWS DMS 以访问亚马逊 S3。 | 创建一个 IAM 角色, AWS DMS 允许列出、获取和放置来自 Amazon S3 存储桶的对象。 | 数据库管理员、工程师 DevOps |
| Task | 说明 | 所需技能 |
|---|---|---|
创建 AWS DMS 源端点。 |
| 数据库管理员、工程师 DevOps |
创建 AWS DMS 目标端点。 | 创建目标端点,选择 Amazon S3 作为目标引擎。 为您之前创建的 IAM 角色提供 Amazon S3 存储桶名称和文件夹名称。 | 数据库管理员、工程师 DevOps |
创建 AWS DMS 复制实例。 | 在同一 VPC、子网和安全组中,创建 AWS DMS 复制实例。有关选择实例类的更多信息,请参阅AWS 文档。 | 数据库管理员、工程师 DevOps |
创建 AWS DMS 迁移任务。 | 要将数据从 Amazon RDS for SQL Server 导出到 Amazon S3 存储桶,请创建数据库迁移任务。对于迁移类型,请选择迁移现有数据。选择您创建的 AWS DMS 终端节点和复制实例。 | 数据库管理员、工程师 DevOps |
| Task | 说明 | 所需技能 |
|---|---|---|
运行数据库迁移任务。 | 若要导出 SQL Server 表数据,请启动数据库迁移任务。该任务将以 CSV 格式将数据从 Amazon RDS for SQL Server 导出到亚马逊 S3 存储桶。 | 数据库管理员、工程师 DevOps |
| Task | 说明 | 所需技能 |
|---|---|---|
删除资源。 | 为了避免产生额外费用,请使用控制台按以下顺序删除资源:
| 数据库管理员、工程师 DevOps |
问题排查
| 问题 | 解决方案 |
|---|---|
排除 Microsoft SQL Server 中的问题 | 有关在使用时解决微软 SQL Server 问题的更多信息 AWS DMS,请参阅微软 SQL Server 问题疑难解答。 |
迁移任务疑难解答 | 有关在使用时解决迁移问题的更多信息 AWS DMS,请参阅中的迁移任务疑难解答 AWS Database Migration Service。 |
相关资源
附加信息
要创建数据库和表并加载示例数据,请使用以下代码:
--Step1: Database creation in RDS SQL Server CREATE DATABASE [Test_DB] ON PRIMARY ( NAME = N'Test_DB', FILENAME = N'D:\rdsdbdata\DATA\Test_DB.mdf' , SIZE = 5120KB , FILEGROWTH = 10%) LOG ON ( NAME = N'Test_DB_log', FILENAME = N'D:\rdsdbdata\DATA\Test_DB_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%) GO --Step2: Create Table USE Test_DB GO Create Table Test_Table(ID int, Company Varchar(30), Location Varchar(20)) --Step3: Load sample data. USE Test_DB GO Insert into Test_Table values(1,'AnyCompany','India') Insert into Test_Table values(2,'AnyCompany','USA') Insert into Test_Table values(3,'AnyCompany','UK') Insert into Test_Table values(4,'AnyCompany','Hyderabad') Insert into Test_Table values(5,'AnyCompany','Banglore')