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

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

Amazon DMS 的组成部分

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

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

数据库发现

DMS Fleet Advisor 从多个数据库环境收集数据,以深入了解您的数据基础设施。DMS Fleet Advisor 从一个或多个中心位置,从您的本地数据库和分析服务器收集数据,无需将其安装在每台计算机上。目前,DMS Fleet Advisor 支持 Microsoft SQL Server、MySQL、Oracle 和 PostgreSQL 数据库服务器。

根据从您的网络中发现的数据,DMS Fleet Advisor 会构建一份清单,供您查看以确定要监控哪些数据库服务器和对象。收集有关这些服务器、数据库和架构的详细信息后,您可以分析目标数据库迁移的可行性。

架构和代码迁移

Amazon DMS 中的 DMS 架构转换使得不同类型的数据库之间的数据库迁移更具可预测性。您可以使用 DMS 架构转换来评估源数据提供程序的迁移复杂性,然后使用它来转换数据库架构和代码对象。然后,您可以将转换后的代码应用于目标数据库。

简而言之,DMS 架构转换由以下三个组件运行:实例配置文件、数据提供程序和迁移项目。实例配置文件指定网络和安全设置。数据提供程序存储数据库连接凭证。迁移项目包含数据提供程序、实例配置文件和迁移规则。Amazon DMS 使用数据提供程序和实例配置文件,设计转换数据库架构和代码对象的流程。

复制实例

概括来说,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 DMS Serverless,让 Amazon DMS 自动预置复制,而不必创建和管理复制实例。有关更多信息,请参见 使用 Amazon DMS Serverless

终端节点

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

  • 端点类型 – 源或目标。

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

  • 服务器名称 – Amazon DMS 可以访问的服务器名称或 IP 地址。

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

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

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

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

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

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

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

复制任务

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

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

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

  • 源终端节点

  • 目标终端节点

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

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

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

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

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

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

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

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

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

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

    • 完整 LOB 模式 – 无论大小,迁移整个 LOB。Amazon DMS 以块的形式分段迁移 LOB,块的大小受最大 LOB 大小参数控制。此模式比受限 LOB 模式的速度要慢。

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

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

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

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

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

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

  • 数据验证

  • Amazon 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 (任务监控)”选项卡可以查看此内容。CDC LatencyTarget 和 CDC LatencySource 图表显示在页面底部。如果您有显示目标延迟的任务,则可能需要对目标终端节点进行一些优化,以提高应用程序速率。

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