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

上次更新时间:2021 年 2 月 16 日

我需要采用简化方法并尽可能缩短停机时间的数据库迁移策略。如何使用 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 控制台,然后从导航窗格中选择 Replication instances(复制实例)。
  2. 选择 Create replication instance(创建复制实例)。
  3. 输入您的复制实例名称、描述、实例类、Amazon Virtual Private Cloud (Amazon VPC) 和多可用区首选项。
    注意:请确保选择足够运行您的迁移工作负载的实例类。如果实例不足以满足您的工作负载,您可以稍后修改复制实例
  4. Advanced(高级)部分,选择您的 VPC 安全组,或选择默认选项。
  5. 选择 Create replication instance(创建复制实例)。

创建目标和源终端节点

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

刷新源终端节点架构

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

创建迁移任务

  1. 打开 AWS DMS 控制台,然后从导航窗格中选择 Database migration tasks(数据库迁移任务)。
  2. 选择 Create task(创建任务)。
  3. 指定 Task identifier(任务标识符)、Replication instance(复制实例)、Source database endpoint(源数据库终端节点)、Target database endpoint(目标数据库终端节点)和 Migration type(迁移类型)。选择以下迁移类型之一:
    Migrate existing data only (仅迁移现有数据) – 对一次性迁移使用此迁移类型。
    迁移现有数据并复制正在进行的更改 - 使用此迁移类型可将大型数据库迁移到 AWS 云且停机时间最短。
    Migrate ongoing replication changes(迁移正在进行的复制更改)– 在您已迁移了现有数据并希望源数据库与 AWS 云中托管的目标 MySQL 数据库同步时,使用此迁移类型。
  4. Task Settings(任务设置)部分,根据需要修改任务。 
  5. Table mappings(表映射)部分,选择 Guided UI(引导用户界面)。
  6. 选择 Add new selection rule(添加新选择规则),然后指定您的 Schema(架构)和 Table name(表名称)。
    注意:要更改或转换某些或所有选定对象的源架构、表或列名,请展开 Transformation rules(转换规则)部分。选择 Add new transformation rule(添加新转换规则)。然后选择目标架构名称操作
  7. 选择 Create task (创建任务)

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

监控您的迁移任务

  1. 使用 Task Monitoring(任务监控)视图监控迁移任务。您可以查看已成功迁移了哪些表以及哪些表正在迁移。请注意以下消息类型:
    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"
    }
  ]
}
检查日志以确认没有错误。

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