

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 AWS DMS 将微软 SQL Server 数据库从亚马逊迁移 EC2 到亚马逊 DocumentDB
<a name="migrate-a-microsoft-sql-server-database-from-amazon-ec2-to-amazon-documentdb-by-using-aws-dms"></a>

*Umamaheswara Nooka，Amazon Web Services*

## Summary
<a name="migrate-a-microsoft-sql-server-database-from-amazon-ec2-to-amazon-documentdb-by-using-aws-dms-summary"></a>

此模式描述了如何使用 AWS 数据库迁移服务 (AWS DMS) 将托管在亚马逊弹性计算云 (亚马逊 EC2) 实例上的微软 SQL Server 数据库迁移到亚马逊文档数据库（兼容 MongoDB）数据库。

AWS DMS 复制任务读取 SQL Server 数据库的表结构，在 Amazon DocumentDB 中创建相应的集合，并执行完全加载迁移。

您还可以使用此模式将本地 SQL Server 或 Amazon Relational Database Service（Amazon RDS）for SQL Server 数据库实例迁移到 Amazon DocumentDB。有关更多信息，请参阅 [AWS Prescriptive Guidance 网站上的指南](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-sql-server/welcome.html)将 Microsoft SQL Server 数据库迁移到 Amazon Web Services Cloud。

## 先决条件和限制
<a name="migrate-a-microsoft-sql-server-database-from-amazon-ec2-to-amazon-documentdb-by-using-aws-dms-prereqs"></a>

**先决条件**
+ 一个活跃的 AWS 账户。
+  EC2 实例上的现有 SQL Server 数据库。
+ 在 SQL Server 数据库中分配给 AWS DMS 的固定数据库（**db\_owner**）角色。有关更多信息，请参阅 SQL Server 文档中的[数据库级别角色](https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/database-level-roles?view=sql-server-ver15)。 
+ 熟悉如何使用 `mongodump`、`mongorestore`、`mongoexport` 和 `mongoimport` 实用程序将数据[移入和移出 Amazon DocumentDB 集群](https://docs.aws.amazon.com/documentdb/latest/developerguide/backup_restore-dump_restore_import_export_data.html)。
+ [Microsoft SQL Server Management Studio](https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15)，已安装并配置。

**限制**
+ Amazon DocumentDB 中的集群大小限制为 64 TB。有关更多信息，请参阅 [Amazon DocumentDB 文档中的集群限制](https://docs.aws.amazon.com/documentdb/latest/developerguide/limits.html#limits-cluster)。 
+ AWS DMS 不支持将多个源表合并到单个 Amazon DocumentDB 集合中。
+ 如果 AWS DMS 在没有主键的情况下处理来自源表的任何更改，它将忽略源表中的大型对象（LOB）列。

## 架构
<a name="migrate-a-microsoft-sql-server-database-from-amazon-ec2-to-amazon-documentdb-by-using-aws-dms-architecture"></a>

**源技术堆栈**
+ Amazon EC2

**目标技术堆栈**
+ Amazon DocumentDB

**目标架构**

![](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/f186220b-5a94-48b2-840d-f04aedf51651/images/00962b85-8b71-49df-b84a-3adcbc9ad3a3.png)


## 工具
<a name="migrate-a-microsoft-sql-server-database-from-amazon-ec2-to-amazon-documentdb-by-using-aws-dms-tools"></a>
+ [AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html) – AWS Database Migration Service（AWS DMS）可帮助您轻松安全地迁移数据库。
+ [Amazon DocumentDB](https://docs.aws.amazon.com/documentdb/latest/developerguide/get-started-guide.html) – Amazon DocumentDB（与 MongoDB 兼容）是一种快速、可靠且完全托管的数据库服务。
+ [亚马逊 EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html) — 亚马逊弹性计算云 (Amazon EC2) 在 AWS 云中提供可扩展的计算容量。
+ [Microsoft SQL Server](https://docs.microsoft.com/en-us/sql/sql-server/?view=sql-server-ver15) – SQL Server 是一个关系数据库管理系统。
+ [SQL Server Management Studio (SSMS)](https://docs.microsoft.com/en-us/sql/ssms/sql-server-management-studio-ssms?view=sql-server-ver15) – SSMS 是一种用于管理 SQL Server 的工具，包括访问、配置和管理 SQL Server 组件。

## 操作说明
<a name="migrate-a-microsoft-sql-server-database-from-amazon-ec2-to-amazon-documentdb-by-using-aws-dms-epics"></a>

### 创建和配置 VPC
<a name="create-and-configure-a-vpc"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建 VPC。 | 登录 AWS 管理控制台，打开 Amazon VPC 控制台。创建具有 IPv4 CIDR 区块范围的虚拟私有云 (VPC)。 | 系统管理员 | 
| 创建安全组和网络 ACLs。 | 在 Amazon VPC 控制台上，根据您的要求为您的 VPC 创建安全组和网络访问控制列表（网络 ACLs）。您还可以对这些配置使用默认设置。有关此场景和其他场景的详细信息，请参阅“相关资源”部分。 | 系统管理员 | 

### 创建和配置 Amazon DocumentDB 集群
<a name="create-and-configure-the-amazon-documentdb-cluster"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
|  创建 Amazon DocumentDB 集群。 | 打开 Amazon DocumentDB 控制台，然后选择“集群”。选择“创建”，然后创建具有一个实例的 Amazon DocumentDB 集群。重要提示：请确保使用 VPC 的安全组配置此集群。 | 系统管理员  | 
|  安装 mongo shell。 | Mongo Shell 是一个命令行实用程序，用于连接和查询 Amazon DocumentDB 集群。要安装它，请运行 “/etc/yum.repos.d/mongodb-org-3.6.repo” 命令来创建存储库文件。运行 “sudo yum install-y mongodb-org-shell” 命令来安装 mongo 外壳。要加密传输中数据，请下载 Amazon DocumentDB 的公有密钥，然后连接到您的 Amazon DocumentDB 实例。有关这些步骤的更多信息，请参阅“相关资源”部分。 | 系统管理员  | 
| 在 Amazon DocumentDB 集群中创建数据库。 | 使用数据库名称运行“use”命令，以在 Amazon DocumentDB 集群中创建数据库。 | 系统管理员  | 

### 创建和配置 AWS DMS 复制实例
<a name="create-and-configure-the-aws-dms-replication-instance"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建 AWS DMS 复制实例。 | 打开 AWS DMS 控制台，然后选择“创建复制实例”。输入复制任务的名称和描述。选择实例类、引擎版本、存储、VPC、多可用区，并使其可公开访问。选择“高级”选项卡以设置网络和加密设置。指定维护设置，然后选择“创建复制实例”。 | 系统管理员  | 
| 配置 SQL Server 数据库。 | 登录到 Microsoft SQL Server 并添加用于源端点和 AWS DMS 复制实例之间通信的入站规则。使用复制实例的私有 IP 地址作为源。重要提示：复制实例和目标端点应位于同一 VPC 上。如果源实例和复制实例 VPCs 不同，请使用安全组中的备用源。 | 系统管理员  | 

### 在 AWS DMS 中创建和测试源端点和目标端点
<a name="create-and-test-the-source-and-target-endpoints-in-aws-dms"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建源数据库和目标数据库端点。 | 打开 AWS DMS 控制台，然后选择“连接源和目标数据库端点”。指定源数据库和目标数据库的连接信息。如果需要，请选择“高级”选项卡以设置“额外连接属性”的值。在端点配置中下载并使用证书捆绑包。 | 系统管理员  | 
| 测试端点连接。 | 选择“运行测试”以测试连接。通过验证安全组设置以及从源数据库实例和目标数据库实例到 AWS DMS 复制实例的连接来排查任何错误消息。 | 系统管理员  | 

### 迁移数据
<a name="migrate-data"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建 AWS DMS 迁移任务。 | 在 AWS DMS 控制台上，依次选择“任务”、“创建任务”。指定任务选项，包括源和目标端点名称以及复制实例名称。在“迁移类型”下，选择“迁移现有数据”和“仅复制数据更改”。选择“启动任务”。 | 系统管理员  | 
| 运行 AWS DMS 迁移任务。 | 在“任务设置”下，指定表准备模式的设置，例如“不执行任何操作”、“删除目标中的表”、“截断”和“在复制中包含 LOB 列”。设置 AWS DMS 将接受的最大 LOB 大小，然后选择“启用日志记录”。将“高级设置”保留为默认值，然后选择“创建任务”。 | 系统管理员  | 
| 监控迁移。 | 在 AWS DMS 控制台上，选择“任务”，然后选择您的迁移任务。选择“任务监控”以监控您的任务。当完成满载迁移并应用缓存更改后，任务停止。 | 系统管理员  | 

### 测试和验证迁移
<a name="test-and-verify-the-migration"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
|  使用 mongo shell 连接到 Amazon DocumentDB 集群。 | 打开 Amazon DocumentDB 控制台，在“集群”下选择您的集群。在“连接和安全性”选项卡中，选择“使用 mongo shell 连接到此集群”。 | 系统管理员  | 
| 验证迁移结果。 | 使用数据库名称运行“use”命令，然后运行“show collections”命令。使用您的数据库名称运行“db. .count();”命令。如果结果与源数据库匹配，则表示迁移成功。 | 系统管理员  | 

## 相关资源
<a name="migrate-a-microsoft-sql-server-database-from-amazon-ec2-to-amazon-documentdb-by-using-aws-dms-resources"></a>

**创建和配置 VPC**
+ [为 VPC 创建安全组](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#CreatingSecurityGroups)
+ [创建网络 ACL](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)

** **

**创建和配置 Amazon DocumentDB 集群**
+ [创建 Amazon DocumentDB 集群](https://docs.aws.amazon.com/documentdb/latest/developerguide/get-started-guide.html#cloud9-cluster)
+ [安装适用于 Amazon DocumentDB 的 mongo shell](https://docs.aws.amazon.com/documentdb/latest/developerguide/get-started-guide.html#cloud9-mongoshell)
+ [连接到 Amazon DocumentDB 集群](https://docs.aws.amazon.com/documentdb/latest/developerguide/get-started-guide.html#cloud9-connectcluster)

** **

**创建和配置 AWS DMS 复制实例**
+ [公有和私有复制实例](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html#CHAP_ReplicationInstance.PublicPrivate)

** **

**在 AWS DMS 中创建和测试源端点和目标端点**
+ [将 Amazon DocumentDB 作为 AWS DMS 的目标](https://docs.aws.amazon.com/dms/latest/userguide/target.docdb.html)
+ [使用 SQL Server 数据库作为 AWS DMS 的源](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SQLServer.html)
+ [使用 AWS DMS 端点](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Endpoints.html)

** **

**迁移数据**
+ [迁移到 Amazon DocumentDB](https://docs.aws.amazon.com/documentdb/latest/developerguide/docdb-migration.html)

** **

**其他资源**
+ [使用 SQL Server 作为 AWS DMS 源的限制](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SQLServer.html#CHAP_Source.SQLServer.Limitations) 
+ [如何使用 Amazon DocumentDB 大规模构建和管理应用程序](https://aws.amazon.com/blogs/database/how-to-use-amazon-documentdb-with-mongodb-compatibility-to-build-and-manage-applications-at-scale/)