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

迁移简要概述

要使用 AWS DMS 将数据从 Oracle 迁移到 Aurora MySQL,请执行以下步骤。如果之前已使用 AWS DMS 或更愿意通过单击鼠标来阅读,以下摘要可帮助您开始迁移。要获取有关迁移的详细信息或者如果您遇到问题,请参阅分步指南。

步骤 1:准备 Oracle 源数据库

要使用 AWS DMS 迁移 Oracle 源数据库中的数据,需要做一些准备,作为最佳实践,我们还建议执行几个附加步骤。

  • AWS DMS 账户 - 较好的做法是创建单独的账户来专门迁移数据。此账户应具有迁移数据所需的最小权限集。下面概述了有关这些权限的特定详细信息。如果只是想在非生产数据库上测试 AWS DMS,则任意一个 DBA 账户都够用。

  • 补充日志记录 – 要捕获更改,您必须启用补充日志记录以使用 DMS。要在数据库级别启用补充日志记录,请发出以下命令。

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA

    此外,对于将迁移的每个表,AWS DMS 要求至少设置键级别的补充日志记录。如果包含源连接的以下额外连接参数,则 AWS DMS 会自动添加此补充日志记录。

    addSupplementalLogging=Y
  • 源数据库 - 要迁移数据,AWS DMS 复制服务器需要对源数据库的访问权限。确保防火墙规则允许 AWS DMS 复制服务器进入。

步骤 2:启动和准备 Aurora MySQL 目标数据库

以下是在启动 Aurora MySQL 实例时要考虑的一些事项:

  • 要获得最佳结果,建议将 Aurora MySQL 实例和复制实例放在相同的 VPC 和可用区(如果可能)中。

  • 建议您创建一个具有最小权限的独立账户用于迁移数据。AWS DMS 账户需要将数据迁移到的所有数据库的以下权限。

    ALTER, CREATE, DROP, INDEX, INSERT, UPDATE, DELETE, SELECT

    此外,AWS DMS 还需要具有 awsdms_control 数据库的完全访问权限。此数据库包含 AWS DMS 所需的特定于迁移的信息。要提供访问权限,请运行以下命令。

    ALL PRIVILEGES ON awsdms_control.* TO 'dms_user'

步骤 3:启动复制实例

AWS DMS 服务将从复制实例连接到源和目标数据库。以下是在启动复制实例时要考虑的一些事项:

  • 要获得最佳结果,建议在目标数据库所在的同一 VPC 和可用区(此示例中为 Aurora MySQL)中定位复制实例。

  • 如果源或目标数据库位于您从中启动复制服务器的 VPC 的外部,则复制服务器必须可公开访问。

  • AWS DMS 会占用大量的内存和 CPU。不过,如果需要,可以轻松纵向扩展。如果您预计在单个复制服务器上运行几个任务,或

  • 对于大多数迁移来说,默认存储空间通常已足够。

步骤 4:创建源终端节点

要让 AWS DMS 能够访问 Oracle 源数据库,您需要创建源终端节点。源终端节点定义 AWS DMS 从复制服务器连接到源数据库所需的所有信息。以下是源终端节点的一些要求。

  • 需要能够从复制服务器访问源终端节点。要允许这样做,您可能需要修改防火墙规则以将复制服务器列入白名单。您可以在 AWS DMS 管理控制台中查找复制服务器的 IP 地址。

  • 为了使 AWS DMS 能够捕获更改,Oracle 要求启用补充日志记录。如果需要 AWS DMS 为您启用补充日志记录,请将以下内容添加到 Oracle 源终端节点的额外连接属性。

    addSupplementalLogging=Y

步骤 5:创建目标终端节点

要使 AWS DMS 能够访问 Aurora MySQL 目标数据库,您需要创建目标终端节点。目标终端节点定义 DMS 连接到 Aurora MySQL 数据库所需的所有信息。

  • 需要能够从复制服务器访问目标终端节点。您可能需要修改您的安全组以使目标终端节点可访问。

  • 如果您已在目标上预创建数据库,则在完全加载期间禁用外键检查是不错的做法。为此,请将以下内容添加到您的额外连接属性。

    initstmt=SET FOREIGN_KEY_CHECKS=0

步骤 6:创建并运行迁移任务

AWS DMS 可通过迁移任务获知数据的迁移位置和迁移方式。在创建迁移任务时,您应考虑设置迁移参数,如下所示。

Endpoints and replication server (终端节点和复制服务器) — 选择上面创建的终端节点和复制服务器。

Migration type (迁移类型) — 在大多数情况下,您需要选择 migrate existing data and replication ongoing changes (迁移现有数据并复制持续更改)。使用该选项时,AWS DMS 加载源数据并捕获对该数据进行的更改。在数据完全加载后,AWS DMS 将应用所有未完成的更改,并使源数据库和目标数据库保持同步,直到任务停止。

Target table preparation mode (目标表准备模式) — 如果让 AWS DMS 创建表,请选择 drop tables on target (删除目标中的表)。如果您使用某种其他方法创建目标表 (例如 AWS Schema Conversion Tool),请选择截断

LOB parameters (LOB 参数) — 如果直接尝试使用 AWS DMS,请选择 include LOB columns in replication (在复制时包括 LOB 列)Limited LOB mode (受限 LOB 模式),然后将 max LOB size (最大 LOB 大小) 设置为 16(即 16k)。 有关 LOB 的更多信息,请参阅分步指南中的详细信息。

Enable logging (启用日志记录) — 要帮助调试迁移问题,请始终启用日志记录。

Table mappings (表映射) — 在从 Oracle 迁移到 Aurora MySQL 时,建议将架构、表和列的名称转换为小写形式。为此,请创建一个自定义表映射。以下示例迁移架构 DMS_SAMPLE 并将架构、表和列的名称转换为小写形式。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "DMS_SAMPLE", "table-name": "%" }, "rule-action": "include" }, { "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": "%" } } ] }