

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

# 的组成部分 Amazon DMS
<a name="CHAP_Introduction.Components"></a>

本节介绍的内部组件 Amazon DMS 以及它们如何协同工作以完成数据迁移。了解 Amazon DMS 的基础组件可以帮助您更高效地迁移数据，并可在进行故障排除或调查问题时提供更好的洞察力。

 Amazon DMS 迁移由五个部分组成：发现要迁移的数据库、自动架构转换、复制实例、源和目标端点以及复制任务。您可以通过在中创建必要的复制实例、终端节点和任务来创建 Amazon DMS 迁移 Amazon Web Services 区域。

**数据库发现**  
DMS Fleet Advisor 从多个数据库环境收集数据，以深入了解您的数据基础设施。DMS Fleet Advisor 从一个或多个中心位置，从您的本地数据库和分析服务器收集数据，无需将其安装在每台计算机上。目前，DMS Fleet Advisor 支持 Microsoft SQL Server、MySQL、Oracle 和 PostgreSQL 数据库服务器。  
根据从您的网络中发现的数据，DMS Fleet Advisor 会构建一份清单，供您查看以确定要监控哪些数据库服务器和对象。收集有关这些服务器、数据库和架构的详细信息后，您可以分析目标数据库迁移的可行性。

**架构和代码迁移**  
中的 DMS 架构转换 Amazon DMS 使不同类型的数据库之间的数据库迁移更具可预测性。您可以使用 DMS 架构转换来评估源数据提供程序的迁移复杂性，然后使用它来转换数据库架构和代码对象。然后，您可以将转换后的代码应用于目标数据库。  
简而言之，DMS 架构转换由以下三个组件运行：实例配置文件、数据提供程序和迁移项目。*实例配置文件*指定网络和安全设置。*数据提供程序*存储数据库连接凭证。*迁移项目*包含数据提供程序、实例配置文件和迁移规则。 Amazon DMS 使用数据提供器和实例配置文件来设计转换数据库架构和代码对象的流程。

** 复制实例 **  
简而言之， Amazon DMS 复制实例就是托管一个或多个复制任务的托管亚马逊弹性计算云 (Amazon EC2) 实例。  
下图显示了运行多个关联的复制任务的示例复制实例。  

![\[开始使用 Amazon DMS\]](http://docs.amazonaws.cn/dms/latest/userguide/images/datarep-intro-rep-instance1.png)

单个复制实例可以托管一个或多个复制任务，具体取决于您的迁移特征和复制服务器的容量。 Amazon DMS 提供了各种复制实例，因此您可以根据自己的用例选择最佳配置。有关各类复制实例的更多信息，请参阅[为您的迁移选择正确的 Amazon DMS 复制实例](CHAP_ReplicationInstance.Types.md)。  
Amazon DMS 在 Amazon EC2 实例上创建复制实例。一些较小的实例类足够用于测试服务或小型迁移。如果您的迁移涉及大量表，或者您打算同时运行多个复制任务，则应考虑使用较大的实例之一。建议使用这种方法，因为 Amazon DMS 可能会占用大量内存和 CPU。  
根据所选的 Amazon EC2 实例类，您的复制实例附带 50 GB 或 100 GB 的数据存储。对于大多数客户，此数量通常已足够使用。但是，如果您的迁移涉及大型事务或大量数据更改，则可能需要增加基本存储分配。更改数据捕获 (CDC) 可能会导致数据被写入磁盘，具体取决于目标写入更改的速度。由于日志文件也会写入磁盘，因此提高日志记录的严重性级别也会导致更高的存储消耗。  
Amazon DMS 可以使用多可用区部署提供高可用性和故障转移支持。在多可用区部署中，在不同的可用区域中 Amazon DMS 自动配置和维护复制实例的备用副本。主复制实例将同步复制到备用副本。如果主复制实例发生故障或没有响应，备用副本将以最少中断恢复任何正在运行的任务。由于主复制实例会不断将其状态复制到备用副本中，因此多可用区部署会产生一些性能开销。  
有关 Amazon DMS 复制实例的更多详细信息，请参阅[使用 Amazon DMS 复制实例](CHAP_ReplicationInstance.md)。  
您可以使用 Amazon DMS Serverless 自动 Amazon DMS 配置复制，而不必创建和管理复制实例。有关更多信息，请参阅 [使用无 Amazon DMS 服务器](CHAP_Serverless.md)。

** 端点**  
Amazon DMS 使用端点访问您的源或目标数据存储。根据您的数据存储，特定连接信息会有所不同，但通常，您在创建终端节点时会提供以下信息：  
+ 端点类型 – 源或目标。
+ 引擎类型 – 数据库引擎的类型，如 Oracle 或 PostgreSQL。
+ 服务器名称- Amazon DMS 可以访问的服务器名称或 IP 地址。
+ 端口 – 用于数据库服务器连接的端口号。
+ 加密 – 安全套接字层（SSL）模式（如果使用 SSL 加密连接）。
+ 凭证 – 具有所需访问权限的账户的用户名和密码。
使用 Amazon DMS 控制台创建终端节点时，控制台要求您测试终端节点连接。在 Amazon DMS 任务中使用终端节点之前，测试必须成功。与连接信息相似，不同引擎类型的特定测试标准不同。一般而言， Amazon DMS 会验证给定服务器名称和端口处是否存在数据库以及提供的凭证是否可用于连接数据库，并具有执行迁移所需的必要权限。如果连接测试成功，则会 Amazon DMS 下载并存储架构信息，以便稍后在任务配置期间使用。例如，架构信息可能包括表定义、主键定义和唯一键定义。  
多个复制任务可以使用单个终端节点。例如，您可能有两个在逻辑上不同的应用程序托管在要单独迁移的同一源数据库中。此种情况下，您将创建两个复制任务，每组应用程序表对应一个复制任务。您可以在两个任务中使用相同的 Amazon DMS 终端节点。  
您可以使用端点设置自定义端点的行为。*端点设置*可以控制多种行为，如日志记录详细信息、文件大小以及其他参数。每种数据存储引擎类型都有不同的端点设置可用。您可以在各个数据存储的源或目标部分中，查找该数据存储的特定端点设置。有关支持的源和目标数据存储的列表，请参阅[的来源 Amazon DMS](CHAP_Introduction.Sources.md)和[的目标 Amazon DMS](CHAP_Introduction.Targets.md)。  
有关 Amazon DMS 终端节点的更多详细信息，请参阅[使用 Amazon DMS 终端节点](CHAP_Endpoints.md)。

**复制任务**  
您可以使用 Amazon DMS 复制任务将一组数据从源终端节点移动到目标终端节点。创建复制任务是在开始迁移之前需要执行的最后一步。  
当您创建复制任务时，需要指定以下任务设置：  
+ 复制实例 – 用于托管和运行任务的实例
+ 源终端节点
+ 目标终端节点
+ 迁移类型选项，如下所列。有关迁移类型选项的完整说明，请参阅 [创建任务](CHAP_Tasks.Creating.md)。
  + 完全加载（迁移现有数据）– 如果您可以承受足够长时间的中断来复制现有数据，则适合选择此选项。该选项仅将数据从您的源数据库迁移到目标数据库，在需要时创建表。
  + 完全加载 \$1 CDC（迁移现有数据和复制持续更改）– 此选项执行完整数据加载，同时捕获源上的更改。在完全加载完成后，将捕获的更改应用到目标。最终更改应用达到稳态。此时您可以关闭应用程序，让剩余的更改传播到目标，然后重新启动应用程序并指向目标。
  + 仅 CDC（仅复制数据更改）– 在某些情况下，使用 Amazon DMS之外的方法复制现有数据可能会更高效。例如，在同构迁移中，使用本机导出和导入工具可能会在加载批量数据时更有效。在这种情况下，您可以使用复制更改 Amazon DMS ，从开始批量加载开始，使源数据库和目标数据库保持同步。
+ 目标表准备模式选项，如下所列。有关目标表模式的完整说明，请参阅 [创建任务](CHAP_Tasks.Creating.md)。
  + 什么都不做 — Amazon DMS 假设目标表已在目标系统上预先创建。
  + 将表丢到目标上 — Amazon DMS 删除并重新创建目标表。
  + 截断 – 如果您在目标上创建表， Amazon 将在开始迁移之前截断这些表。如果不存在任何表并且您选择了此选项，则 Amazon DMS 会创建所有缺失的表。
+ LOB 模式选项，如下所列。有关 LOB 模式的完整说明，请参阅 [在任务中为源数据库设置 LOB 支持 Amazon DMS](CHAP_Tasks.LOBSupport.md)。
  + 不包括 LOB 列 – 从迁移操作中排除 LOB 列。
  + 完整 LOB 模式-无论大小 LOBs 如何，都完成迁移。 Amazon DMS LOBs 按照 **Max** LOB Size 参数控制的区块进行分段迁移。此模式比受限 LOB 模式的速度要慢。
  + 受限 LOB 模式-截断 LOBs 为 “**最大 LO** B 大小” 参数指定的值。此模式比使用完整 LOB 模式的速度要快。
+ 表映射 – 指示要迁移的表及其迁移方式。有关更多信息，请参阅 [使用表映射指定任务设置](CHAP_Tasks.CustomizingTasks.TableMapping.md)。
+ 数据转换，如下所列。有关数据转换的更多信息，请参阅[使用 JSON 指定表选择和转换规则](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.md)。
  + 更改架构、表和列名称。
  + 更改表空间名称（针对 Oracle 目标终端节点）。
  + 在目标上定义主键和唯一索引。
+ 数据验证
+ Amazon CloudWatch 日志
您可以使用任务将数据从源终端节点迁移到目标终端节点，任务处理在复制实例上完成。您可以指定要迁移的表和架构以及任何特殊处理，例如，日志记录要求、控制表数据和错误处理。  
从概念上讲， Amazon DMS 复制任务执行两个不同的功能，如下图所示。  

![\[开始使用 Amazon DMS\]](http://docs.amazonaws.cn/dms/latest/userguide/images/datarep-intro-rep-task1.png)

完全加载过程非常简单明了，易于理解。从源中以批量提取方式提取数据，并将其直接加载到目标中。您可以在 Amazon DMS 控制台的 “**高级设置”** 下指定要并行提取和加载的表的数量。  
有关 Amazon DMS 任务的更多信息，请参阅[处理 Amazon DMS 任务](CHAP_Tasks.md)。

**持续复制，或更改数据捕获 (CDC)**  
在将数据迁移到目标时，您还可以使用 Amazon DMS 任务来捕获源数据存储的持续更改。从源端点复制正在进行的更改时 Amazon DMS 使用的更改捕获过程使用数据库引擎的本机 API 来收集对数据库日志的更改。  
在 CDC 过程中，复制任务旨在使用内存中缓冲区保存传输中的数据，从而从源到目标流式处理更改。如果内存中缓冲区因任何原因而耗尽，负责任务会将待处理更改溢出到磁盘上的更改缓存。例如，如果 Amazon DMS 从源捕获更改的速度快于在目标系统上应用更改的速度，则可能会发生这种情况。在这种情况下，您会看到任务的*目标延迟* 超出任务的*源延迟*。  
您可以通过在 Amazon DMS 控制台上导航到您的任务并打开 “任务监控” 选项卡来检查这一点。 CDCLatency目标和 CDCLatency来源图表显示在页面底部。如果您有显示目标延迟的任务，则可能需要对目标终端节点进行一些优化，以提高应用程序速率。  
复制任务还会为任务日志使用存储空间，如上所述。随复制实例预配置的磁盘空间通常足以满足日志记录和溢出更改需要。如果您需要更多磁盘空间，例如，在使用详细调试调查迁移问题时，您可以修改复制实例以分配更多空间。