Amazon DMS 的组成部分 - Amazon Database Migration Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

Amazon DMS 的组成部分

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

Amazon DMS 迁移包含三个组件:复制实例、源和目标终端节点以及复制任务。你创建Amazon DMS迁移通过在Amazon区域。

复制实例

从较高的层面上说,Amazon DMS复制实例只是托管一个或多个复制任务的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。

下图显示了运行多个关联的复制任务的示例复制实例。


                            开始使用 Amazon DMS

单个复制实例可以托管一个或多个复制任务,具体取决于迁移的特征和复制服务器的容量。Amazon DMS 提供多种复制实例,以便您为自己的使用案例选择最佳配置。有关各类复制实例的更多信息,请参阅选择正确的选择Amazon适用于您迁移的 DMS 复制实例

Amazon DMS在 Amazon EC2 实例上创建复制实例。一些较小的实例类足够用于测试服务或小型迁移。如果您的迁移涉及大量表,或者您打算同时运行多个复制任务,则应考虑使用较大的实例之一。建议使用这种方法,因为 Amazon DMS 可能会占用大量内存和 CPU。

根据所选的 Amazon EC2 实例类,您的复制实例附带 50 GB 或 100 GB 的数据存储。对于大多数客户,此数量通常已足够使用。但是,如果您的迁移涉及大型事务或大量数据更改,则可能需要增加基本存储分配。更改数据捕获 (CDC) 可能会导致数据被写入磁盘,具体取决于目标写入更改的速度。

Amazon DMS 使用多可用区部署提供高可用性和故障转移支持。在多可用区部署中,Amazon DMS 自动在不同可用区中预置和维护复制实例的备用副本。主复制实例将同步复制到备用副本。如果主复制实例发生故障或没有响应,备用副本将以最少中断恢复任何正在运行的任务。由于主复制实例会不断将其状态复制到备用副本中,因此多可用区部署会产生一些性能开销。

有关 Amazon DMS 复制实例的更详细信息,请参阅使用 Amazon DMS 复制实例

Amazon EC2 上的微软软件的许可选项

在 Amazon EC2 上,您可以选择运行成本中包含相关许可证费用的实例(“包含许可证”),或者使用已从 Microsoft 购买的许可证。对于微软软件,EC2 允许您为包含 Windows Server 和 SQL Server 许可证的实例付费。对于所有其他微软软件,客户可以自带许可证 (BYOL),但须遵守微软的条款。有关 BYOL 的更多信息,请参阅Amazon Web Services 和微软,常见问题.

Endpoint

Amazon DMS 使用终端节点访问您的源或目标数据存储。根据您的数据存储,特定连接信息会有所不同,但通常,您在创建终端节点时会提供以下信息:

  • 终端节点类型 — 源或目标。

  • 引擎类型 — 数据库引擎的类型,如 Oracle 或 PostgreSQL。。

  • 服务器名称 — 服务器名称或 IP 地址Amazon DMS可以到达。

  • 端口 — 用于数据库服务器连接的端口号。

  • 加密 — 安全套接字层 (SSL) 模式(如果使用 SSL 加密连接)。

  • 凭证 — 具有所需访问权限的账户的用户名和密码。

在使用 Amazon DMS 控制台创建终端节点时,控制台要求您对终端节点连接进行测试。测试必须成功,然后才能在 DMS 任务中使用该终端节点。与连接信息相似,不同引擎类型的特定测试标准不同。一般而言,Amazon DMS 会验证给定服务器名称和端口处是否存在数据库以及提供的凭证是否可用于连接数据库,并具有执行迁移所需的必要权限。如果连接测试成功,Amazon DMS 会下载并存储架构信息,以便稍后在任务配置期间使用。例如,架构信息可能包括表定义、主键定义和唯一键定义。

多个复制任务可以使用单个终端节点。例如,您可能有两个在逻辑上不同的应用程序托管在要单独迁移的同一源数据库中。此种情况下,您将创建两个复制任务,每组应用程序表对应一个复制任务。您可以在两个任务中使用同一 Amazon DMS 终端节点。

您可以使用额外连接属性来自定义终端节点的行为。额外连接属性 可以控制多种行为,如日志记录详细信息、文件大小以及其他参数。每个数据存储引擎类型具有不同的额外连接属性可用。您可以在各个数据存储的源或目标部分中,查找该数据存储的特定额外连接属性。有关支持的源和目标数据存储的列表,请参阅Amazon DMS 的源Amazon DMS 的目标

有关 Amazon DMS 终端节点的更多详细信息,请参阅 使用AmazonDMS 终端节点

复制任务

可以使用 Amazon DMS 复制任务将一组数据从源终端节点复制到目标终端节点。创建复制任务是在开始迁移之前需要执行的最后一步。

当您创建复制任务时,需要指定以下任务设置:

  • 复制实例 — 托管和运行任务的实例

  • 源终端节点

  • 目标终端节点

  • 迁移类型选项,如下所列。有关迁移类型选项的完整说明,请参阅 创建任务

    • 完全加载(迁移现有数据)— 如果您可以承受足够长时间的中断来复制现有数据,则适合选择该选项。该选项仅将数据从您的源数据库迁移到目标数据库,在需要时创建表。

    • 完全加载 + CDC (迁移现有数据和复制持续更改) — 该选项执行完整数据加载,同时捕获源上的更改。在完全加载完成后,将捕获的更改应用到目标。最终更改应用达到稳态。此时您可以关闭应用程序,让剩余的更改传播到目标,然后重新启动应用程序并指向目标。

    • CDC (仅 CDC) (仅 CDC (仅 CDC) (仅 CDC) (仅 CDC) (仅 CDC) (仅 CDC) (仅 CDC) (仅 CDC) (仅 CDC) (Amazon DMS. 例如,在同构迁移中,使用本机导出和导入工具可能会在加载批量数据时更有效。在这种情况下,您可以使用 Amazon DMS 复制从您开始批量加载的时候开始的更改,以实现并保持源数据库与目标数据库的同步。

  • 目标表准备模式选项,如下所列。有关目标表模式的完整说明,请参阅 创建任务

    • 不执行任何操作Amazon DMS假定已在目标上预先创建目标表。

    • 删除目标中的表 —Amazon DMS删除并重新创建目标表。

    • 截断 — 如果您在目标中创建表,Amazon在开始迁移之前,DMS 将截断它们。如果不存在任何表并且您选择了此选项,Amazon DMS 将创建任何缺少的表。

  • LOB 模式选项,如下所列。有关 LOB 模式的完整说明,请参阅 在 Amazon DMS 任务中为源数据库设置 LOB 支持

    • 不包括 LOB 列 — 从迁移操作中排除 LOB 列。

    • 完整 LOB 模式 — 迁移整个 LOB,而不管大小如何。Amazon DMS以块的形式分段迁移 LOB,块的大小受最大 LOB 大小参数。此模式比受限 LOB 模式的速度要慢。

    • 受限 LOB 模式 — 将 LOB 截断为最大 LOB 大小参数。此模式比使用完整 LOB 模式的速度要快。

  • 表映射 — 指示要迁移的表及其迁移方式。有关更多信息,请参阅 使用表映射指定任务设置

  • 数据转换,如下所列。有关数据转换的更多信息,请参阅 使用 JSON 指定表选择和转换规则

    • 更改架构、表和列名称。

    • 更改表空间名称(针对 Oracle 目标终端节点)。

    • 在目标上定义主键和唯一索引。

  • 数据验证

  • 亚马逊CloudWatch记录

您可以使用任务将数据从源终端节点迁移到目标终端节点,任务处理在复制实例上完成。您可以指定要迁移的表和架构以及任何特殊处理,例如,日志记录要求、控制表数据和错误处理。

从概念上讲,Amazon DMS复制任务执行两种不同的功能,如下图所示。


                            开始使用 Amazon DMS

完全加载过程非常简单明了,易于理解。从源中以批量提取方式提取数据,并将其直接加载到目标中。您可以在 Amazon DMS 控制台上的 Advanced Settings (高级设置) 下指定要并行提取和加载的表数。

有关 Amazon DMS 任务的更多信息,请参阅使用 Amazon DMS 任务

持续复制,或更改数据捕获 (CDC)

您也可以使用 Amazon DMS 任务在将数据迁移到目标时捕获对源数据存储的持续更改。Amazon DMS 在复制来自源终端节点的持续更改时使用更改捕获流程,该流程使用数据库引擎的本机 API 收集对数据库日志的更改。

在 CDC 过程中,复制任务旨在使用内存中缓冲区保存传输中的数据,从而从源到目标流式处理更改。如果内存中缓冲区因任何原因而耗尽,负责任务会将待处理更改溢出到磁盘上的更改缓存。例如,如果 Amazon DMS 从源捕获更改的速度比在目标中应用更改的速度快,则会出现这种情况。在这种情况下,您会看到任务的目标延迟 超出任务的源延迟

通过在 Amazon DMS 控制台上导航到您的任务并打开“Task Monitoring (任务监控)”选项卡可以查看此内容。CDCLatencyTarget和 CDCLatencySource图形显示在页面底部。如果您有显示目标延迟的任务,则可能需要对目标终端节点进行一些优化,以提高应用程序速率。

复制任务还会将存储用于任务日志,如上所述。随复制实例预配置的磁盘空间通常足以满足日志记录和溢出更改需要。如果您需要更多磁盘空间,例如,在使用详细调试调查迁移问题时,您可以修改复制实例以分配更多空间。

架构和代码迁移

Amazon DMS 不执行架构或代码转换。如果您的源和目标是相同的数据库引擎,则可以使用 Oracle SQL Developer、MySQL Workbench 和 pgAdmin III 等工具来移动架构。如果需要将现有架构转换到不同的数据库引擎,可以使用 Amazon SCT。它可以使用表、索引、视图等创建目标架构,也可以生成和创建整个架构。您还可以使用 Amazon SCT 将 PL/SQL 或 TSQL 转换为 PgSQL 和其他格式。有关 Amazon SCT 的更多信息,请参阅Amazon Schema Conversion Tool

Amazon DMS 会尽可能尝试为您创建目标架构。有时,Amazon DMS无法创建模式 — 例如,Amazon DMS出于安全原因,不会创建目标 Oracle 架构。对于 MySQL 数据库目标,可以使用额外连接属性让 DMS 将所有对象迁移到指定的数据库和架构。或者,您可以使用这些属性让 DMS 在源上查找架构时为您创建各个数据库和架构。