如何使用 AWS DMS 迁移到 Amazon RDS 或 Aurora MySQL 数据库实例?

上次更新时间:2020 年 4 月 30 日

我需要采用简化方法并尽可能缩短停机时间的数据库迁移策略。如何使用 AWS Database Migration Service (AWS DMS) 迁移到 Amazon Relational Database Service (Amazon RDS) 或 Amazon Aurora MySQL 数据库实例?

简短描述

注意:如果您执行同构迁移,则应尽可能使用引擎的本机工具(例如 MySQL dump 或 MySQL replication)。

要使用 AWS DMS 迁移到 Amazon RDS 或预置的 Aurora MySQL 数据库实例:

  • 创建复制实例
  • 创建目标和源终端节点
  • 刷新源终端节点架构
  • 创建迁移任务
  • 监控您的迁移任务

解决方法

注意:迁移表格数据前,AWS DMS 仅在需要时使用目标上的主键创建一个表。要生成完整的目标架构,可以使用 AWS Schema Conversion Tool。有关更多信息,请参阅转换架构

(可选)使用 Amazon CloudWatch 启用日志记录

Amazon CloudWatch Logs 可以在迁移时提醒您潜在问题。如需了解更多信息,请参阅使用 Amazon CloudWatch 监控复制任务

创建复制实例

  1. 打开 AWS DMS 控制台,并从导航窗格中选择复制实例
  2. 选择创建复制实例
  3. 输入您的复制实例名称、描述、实例类、Amazon Virtual Private Cloud (Amazon VPC) 和多可用区首选项。
    注意:请务必选择足以满足您的迁移工作负载的实例类。如果实例不足以满足您的工作负载,您可以稍后修改复制实例
  4. 高级部分下,选择您的 VPC 安全组,或选择默认选项。
  5. 选择创建复制实例

创建目标和源终端节点

  1. 打开 AWS DMS 控制台,然后从导航窗格中选择终端节点
  2. 选择创建终端节点来创建源数据库和目标数据库。
  3. 对于终端节点类型,选择
  4. 如果您将 Amazon S3 用作源,请输入终端节点引擎的特定信息,如服务器名称、端口、SSL 模式或 Amazon Simple Storage Service (Amazon S3) 存储桶名称。
  5. 选择运行测试
  6. 在测试完成后,选择保存
  7. 重复步骤 3-6,但对于终端节点类型,请选择目标
    注意:确保为目标完成此步骤。

刷新源终端节点架构

  1. 打开 AWS DMS 控制台,然后从导航窗格中选择终端节点
  2. 选择源终端节点,然后选择刷新架构
  3. 选择刷新架构
    注意:您必须刷新源,以使源架构在您创建 AWS DMS 任务时显示在表映射中。

创建迁移任务

  1. 打开 AWS DMS 控制台,然后从导航窗格中选择数据库迁移任务
  2. 选择创建任务
  3. 指定任务标识符复制实例源数据库终端节点目标数据库终端节点迁移类型。选择以下迁移类型之一:
    仅迁移现有数据 - 对一次性迁移使用此迁移类型。
    迁移现有数据并复制正在进行的更改 - 使用此迁移类型可将大型数据库迁移到 AWS 云且停机时间最短。
    迁移正在进行的复制更改 - 在您已迁移了现有数据并希望源数据库与 AWS 云中托管的目标 MySQL 数据库同步时,使用此迁移类型。
  4. 任务设置部分中,根据需要修改任务。 
  5. 表映射部分中,选择引导用户界面
  6. 选择添加新选择规则,然后指定您的架构表名称
    注意:要更改或转换某些或所有选定对象的源架构、表或列名,请展开转换规则部分。选择添加新转换规则。然后选择目标架构名称操作
  7. 选择创建任务

注意:如果您具有大型对象 (LOB) 列,建议使用受限的 LOB 模式。有关更多信息,请参阅在 AWS DMS 任务中为源数据库设置 LOB 支持

监控您的迁移任务

  1. 使用任务监控视图监控迁移任务。您可以查看已成功迁移了哪些表以及哪些表正在迁移。请注意以下消息类型:
    I - 指示信息性消息
    W - 指示警告
    E - 指示在迁移数据库时出现的错误
  2. 通过终端连接到源和目标实例来验证是否已成功迁移数据库。

迁移 Oracle

在使用 Oracle 作为源数据库时,表将迁移到指定的目标终端节点用户。您可以通过使用转换规则来更改 Oracle 目标的架构。有关更多信息,请参阅更改 Oracle 目标的用户和架构

迁移 MySQL

在从 MySQL 迁移到 Amazon Aurora 时,请使用引擎本机工具(如果可能)。在迁移过程中,架构和表将迁移到目标上的同名架构和表。如果您希望将表迁移到目标上的不同架构,请创建映射规则来指定目标数据库上的新架构:

{
  "rules": [{
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "test",
        "table-name": "%"
      },
      "rule-action": "include"
    }, {
      "rule-type": "transformation",
      "rule-id": "2",
      "rule-name": "2",
      "rule-action": "rename",
      "rule-target": "schema",
      "object-locator": {
        "schema-name": "test"
      },
      "value": "newtest"
    }
  ]
}

检查日志以确认不存在任何错误。

在切换到新目标数据库之前监控延迟并比较源和目标数据库上的数据计数。有关更多信息,请参阅迁移任务问题排查