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

步骤 6:创建迁移任务

在创建迁移任务时,您告知 AWS DMS 所需的数据迁移方式。在一个任务中,您定义要迁移的表、这些表的迁移位置以及迁移方式。如果计划使用 AWS DMS 的更改捕获和应用功能,则必须了解单个任务中维护的事务。换言之,您应迁移所有参与同一个任务中的单个事务的表。

利用 AWS DMS 任务,您可以指定要迁移的架构和迁移类型。您可以迁移现有数据、迁移现有数据并复制正在进行的更改或仅复制数据更改。此演练仅迁移现有数据。

创建迁移任务

  1. 在导航窗格中,选择任务

  2. 选择创建任务

  3. 创建任务页中,指定任务选项。下表描述了设置。

    对于此选项 执行该操作

    任务名称

    为任务提供有助于组织识别的描述性名称始终是不错的做法。

    任务描述

    键入任务的说明。

    源终端节点

    选择您的源终端节点。

    目标终端节点

    选择您的目标终端节点。

    复制实例

    选择在其上运行任务的复制实例。请记住,必须可从该实例访问您的源和目标终端节点。

    迁移类型

    可对 AWS DMS 使用三种不同的迁移类型。

    • 迁移现有数据:

      如果选择该选项,AWS DMS 仅迁移现有数据。不捕获对源数据进行的更改,也不会将这些更改应用于目标。如果您能够承受在完全加载的持续时间内发生中断,则可使用该选项轻松直接地迁移。此外,此方法也适合在创建数据库的测试副本时使用。

    • 迁移现有数据并复制持续更改:

      利用该选项,AWS DMS 可在迁移现有数据时捕获更改。甚至在加载批量数据后,AWS DMS 也会继续捕获和应用更改。最终,源数据库和目标数据库将保持同步,从而实现停机时间最少的迁移。为此,请执行以下步骤:

      • 关闭应用程序

      • 让最终更改流向目标

      • 执行任何管理任务,例如,启用外键和触发器

      • 启动指向新目标数据库的应用程序

      注意

      AWS DMS 逐个表加载批量数据,一次加载 <n> 个表。在进行完全加载期间,AWS DMS 开始尽快将缓存的更改应用于目标表。在批量加载期间,违反了引用完整性,因此必须为完全加载禁用现有外键。在完全加载完成后,您的目标数据库将具有完整性,并且更改将作为事务应用。

    • 仅复制数据更改:

      在某些情况下,您可以选择使用其他方法来加载批量数据。此方法通常仅适用于同构迁移。

    在创建时启动任务

    在大多数情况下,让任务立即启动是不错的做法。有时,您可能需要延迟启动任务以更改日志记录级别。

  4. 接下来,设置高级设置,如下所示。

    对于此选项 执行该操作

    目标表准备模式

    AWS DMS 可让您指定加载前准备目标表的方式。

    Do nothing (不执行任何操作) - 如果选择该选项,AWS DMS 不会执行任何操作以准备表。您的表结构将保留原样,并且任何现有数据将保留在表中。您可以使用此方法来整合多个系统中的数据。

    Drop tables on target (删除目标中的表) - 如果需要 AWS DMS 创建目标表,通常使用该选项。如果选择该选项,AWS DMS 在迁移前删除并重新创建要迁移的表。

    截断 – 如果您希望在目标系统上预创建一些或所有表 (可能使用 AWS Schema Conversion Tool),请选择该选项。如果选择该选项,AWS DMS 在加载目标表之前将其截断。如果目标表不存在,AWS DMS 将创建该表。

    在复制时包括 LOB 列

    有时,大对象 (LOB) 难以在系统之间迁移。AWS DMS 提供了大量选项来帮助优化 LOB 列。要查看 AWS DMS 将哪些数据类型视为 LOBS 以及执行此操作的时间,请参阅 AWS DMS 文档。

    不包括 LOB 列 – 在将数据从一个数据库迁移到另一个数据库时,您可能有机会重新考虑 LOB 的存储方式,特别是异构迁移。如果您需要这样做,则无需迁移 LOB 数据。

    完整 LOB 模式 - 在完整 LOB 模式下,AWS DMS 将所有 LOB 从源迁移到目标,而不管大小如何。在此配置中,AWS DMS 没有与预计的 LOB 的最大大小相关的信息。因此,逐个迁移 LOB,一次迁移一个。完整 LOB 模式下的速度非常慢。

    受限 LOB 模式 - 在受限 LOB 模式下,您设置 AWS DMS 接受的最大大小 LOB。这样做将允许 AWS DMS 预分配内存并批量加载 LOB 数据。超出最大 LOB 大小的 LOB 将被截断,并且会将警告发布到日志文件。在受限 LOB 模式下,您可以获得比完整 LOB 模式高得多的性能。如果可能,建议您使用受限 LOB 模式

    注意

    对于 Oracle,LOB 将被视为 VARCHAR 数据类型 (如果可能)。此方法意味着,AWS DMS 将批量捕获数据库中的数据,速度大大快于其他方法。Oracle 中的 VARCHAR 的最大大小为 64K,因此,当 Oracle 为源数据库时,小于 64k 的有限 LOB 大小最佳。

    最大 LOB 大小 (K)

    如果将任务配置为在 limited LOB mode (受限 LOB 模式) 下运行,该选项确定 AWS DMS 接受的最大大小 LOB。任何大于此值的 LOB 将被截断至此值。

    LOB 块大小 (K)

    如果将任务配置为使用完整 LOB 模式,AWS DMS 将分段检索 LOB。该选项决定每个分段的大小。在设置该选项时,请特别注意网络配置允许的最大包大小。如果 LOB 块大小超出允许的最大包大小,则可能会看到连接断开错误。

    自定义 CDC 启动时间

    该参数适合配置为仅复制数据更改的任务。它告知 AWS DMS 从何处开始查找更改流中的更改。

    启用日志记录

    始终启用日志记录。

  5. 设置附加参数。

    对于此选项 执行该操作

    在目标架构中创建控制表

    AWS DMS 需要目标数据库中的一些控制表。默认情况下,将在数据所在的数据库中创建这些表。利用该参数,您可以告知 AWS DMS 将这些项放置在其他位置。

    可并行加载的表数量上限

    AWS DMS 对数据执行逐表加载。您可以使用该参数控制 AWS DMS 将并行加载的表的数目。默认值为 8 (大多数情况下,这是最佳值)。

  6. 指定任何表映射设置。

    表映射告知 AWS DMS 任务应将哪些表从源迁移到目标。表映射以 JSON 形式表示,但可使用 AWS 管理控制台进行一些设置。表映射还可包含转换,例如,将表名从大写形式更改为小写形式。

    AWS DMS 为源数据库中的每个(非系统)架构生成默认表映射。大多数情况下,您需要自定义您的表映射。要自定义您的表映射,请选择自定义单选按钮。有关创建表映射的详细信息,请参阅 AWS DMS 文档。以下表映射执行下列操作:

    • 它在迁移中包含 DMS_SAMPLE 架构。

    • 它排除表 NFL_DATA、MLB_DATA、NAME_DATE 和 STADIUM_DATA。

    • 它将架构、表和列的名称转换为小写形式。

    { "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "DMS_SAMPLE", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "selection", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "DMS_SAMPLE", "table-name": "MLB_DATA" }, "rule-action": "exclude" }, { "rule-type": "selection", "rule-id": "3", "rule-name": "3", "object-locator": { "schema-name": "DMS_SAMPLE", "table-name": "NAME_DATA" }, "rule-action": "exclude" }, { "rule-type": "selection", "rule-id": "4", "rule-name": "4", "object-locator": { "schema-name": "DMS_SAMPLE", "table-name": "NFL_DATA" }, "rule-action": "exclude" }, { "rule-type": "selection", "rule-id": "5", "rule-name": "5", "object-locator": { "schema-name": "DMS_SAMPLE", "table-name": "NFL_STADIUM_DATA" }, "rule-action": "exclude" },{ "rule-type": "transformation", "rule-id": "6", "rule-name": "6", "rule-action": "convert-lowercase", "rule-target": "schema", "object-locator": { "schema-name": "%" } }, { "rule-type": "transformation", "rule-id": "7", "rule-name": "7", "rule-action": "convert-lowercase", "rule-target": "table", "object-locator": { "schema-name": "%", "table-name": "%" } }, { "rule-type": "transformation", "rule-id": "8", "rule-name": "8", "rule-action": "convert-lowercase", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%", "column-name": "%" } } ] }