AWS Database Migration Service
用户指南 (版本 API Version 2016-01-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS Database Migration Service 的组件

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

AWS DMS 迁移包含三个组件:复制实例、源和目标终端节点以及复制任务。通过在 AWS 区域中创建必要的复制实例、终端节点和任务即可创建 AWS DMS 迁移。

复制实例

概括来说,AWS DMS 复制实例只是托管一个或多个复制任务的托管 Amazon Elastic Compute Cloud (Amazon EC2) 实例。

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


                        开始使用 AWS DMS

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

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

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

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

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

终端节点

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

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

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

  • 服务器名称 — 服务器名称或 IP 地址,可供 AWS DMS 访问

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

  • 加密 — SSL 模式(如果用于加密连接)。

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

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

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

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

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

复制任务

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

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

  • 复制实例 – 用于托管和运行任务的实例

  • 源终端节点

  • 目标终端节点

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

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

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

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

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

    • Do nothing (不执行任何操作) – AWS DMS 假定已在目标上预先创建目标表。

    • Drop tables on target (删除目标中的表) – AWS DMS 删除并重新创建目标表。

    • Truncate (截断) – 如果在目标上创建表,AWS DMS 将在开始迁移之前截断这些表。如果不存在任何表并且您选择了此选项,AWS DMS 将创建任何缺少的表。

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

    • Don't include LOB columns (不包括 LOB 列) – 从迁移操作中排除 LOB 列。

    • Full LOB mode (完整 LOB 模式) – 迁移整个 LOB,而不管大小如何。AWS DMS 以块的形式分段迁移 LOB,块的大小受最大 LOB 大小参数的控制。此模式比受限 LOB 模式的速度要慢。

    • Limited LOB mode (受限 LOB 模式) – 按 Max LOB Size (最大 LOB 大小) 参数指定的值截断 LOB。此模式比使用完整 LOB 模式的速度要快。

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

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

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

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

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

  • 数据验证

  • Amazon CloudWatch 日志记录

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

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


                        开始使用 AWS DMS

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

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

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

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

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

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

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

架构和代码迁移

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

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