+86 13541016684Mon. - Fri. 10:00-22:00

使用 AWS Database Migration Service (AWS DMS) 进行数据迁移

使用 AWS Database Migration Service (AWS DMS) 进行数据迁移

使用 AWS Database Migration Service (AWS DMS) 进行数据迁移

什么是 AWS 数据库迁移服务 (AWS DMS)?

AWS Database Migration Service (AWS DMS) 顾名思义,是将数据库迁移到 AWS 的服务。
其特点如下。

  • 可轻松将数据库数据迁移到 AWS 的托管服务
  • 除了同类型的数据库引擎外,还支持不同类型之间的数据迁移。
  • 不仅可以使用 RDBMS,还可以使用 NoSQL 数据库作为迁移源。

与其他迁移工具的区别

除了 AWS DMS 之外,AWS 还提供服务器迁移服务,例如 AWS Server Migration Service (AWS SMS) 和 AWS Application Migration Service (AWS MGN)。
差异的简要总结如下。

  • AWS服务器迁移服务(AWS SMS)
    主要用例是从本地 VMware 和 Hyper-V 进行大规模迁移。
    使用虚拟设备的无代理服务器迁移服务
  • AWS应用程序迁移服务(AWS MGN)
    支持通过简单的迁移流程迁移到 AWS 的迁移服务。
    需要在服务器上安装 AWS MGN 代理
    (2021 年 11 月更新部分兼容无代理)
  • AWS数据库迁移服务(AWS DMS)
    提前准备好 RDS 或 Aurora 等托管数据库服务后,使用 AWS DMS 迁移数据的服务。
    迁移源和目标数据库需要来自 AWS DMS 的互联网/封闭连接

DMS 中的迁移步骤

在本文中,我们将实际使用 AWS DMS 并介绍将数据从 EC2 迁移到 RDS 的步骤,就像在本地一样。
两个数据库引擎均使用MySQL,EC2端版本为5.7,RDS端版本为8.0。

请注意,不同数据库引擎之间的迁移是通过使用AWS Schema Conversion Tool(SCT)来实现的,但我们这次不会使用它。
有关 SCT 的更多信息,请参阅以下文档。

AWS Schema 转换工具とは – AWS Schema 转换工具

另外,在本文中,我们将通过一个从 MySQL 到 MySQL 的数据迁移示例,让您了解如何使用 AWS DMS。
如果源数据库和目标数据库类型相同,首先考虑使用数据库引擎提供的迁移工具,这是实际数据迁移的有效选择。

使用与 MySQL 兼容的数据库作为 AWS DMS 的源 – AWS Database Migration Service

配置图

下图是当前配置的图像。
假设有一个本地服务器,我们将在AWS上准备EC2(Amazon Linux 2)并设置MySQL 5.7。
同样在目标 RDS 上启动 MySQL 8.0。
通过互联网传输数据,并将数据迁移到目标RDS。

aws05_01

注意,通过互联网连接源数据库时,对于MySQL来说,需要授予数据库访问权限,但本文不会对此进行解释。 请咨询您的 DBA 等,并设置权限。

设置 AWS Database Migration Service (AWS DMS)

设置 AWS Database Migration Service (AWS DMS)。

我们不会解释为 DMS 创建的 VPC 设置,但我们将准备基本的公有子网和私有子网。
详细请参考官方文档。

AWS Database Migration Service 的先决条件 – AWS Database Migration Service

1.创建安全组

提前创建复制实例要设置的安全组。

  • 入站规则:无规则创建
  • 出站规则:将规则添加到源数据库以从复制实例连接到。
    由于这次我使用 MySQL,因此我将 TCP3306 目标设置为 0.0.0.0/0。

aws05_02

2.创建复制实例

当您首次访问 AWS DMS 控制台时,系统将指导您创建复制实例,首先按如下所述配置子网组。

aws05_03

点击右上角“创建子网组”

aws05_04

创建子网组。

  • 添加子网: 这次,我们将仅添加公有子网。
    如果保留默认值,此子网组似乎会添加 VPC 中的所有子网。
    在验证过程中,我没有意识到这一点,无意中在私有子网中创建了一个复制实例,导致 NW 通信不可用……
  • 标签:设置成本标签等。

aws05_05

接下来,创建一个复制实例。

aws05_06

配置复制实例。

aws05_07

这些是与网络相关的设置。

  • 多可用区:建议在生产中启用此功能。
    这次我们将再次启用它,但请注意,费用会更高。
  • 公开访问:也已启用
  • 复制子网组:选择您之前创建的子网组
  • VPC 安全组:选择您之前创建的安全组。
    必须允许到源数据库的出站规则

aws05_08

维护和标签设置。

  • 维护窗口:采用UTC表示法,请注意时差。 这里,UTC 周六 20:00 = JST 周日 05:00
  • 标签:设置成本标签等。

aws05_09

稍等片刻后,复制实例创建完成。

aws05_10

设置 AWS Database Migration Service (AWS DMS)

3.创建端点(源端点)

接下来,创建一个端点。

aws06_01

首先,创建迁移源端点。

  • 端点类型:源端点
  • 源引擎:MySQL
  • 访问端点数据库:手动提供访问信息。
    对于服务器名称(在本例中为目标服务器的全局 IP)、端口、用户名和密码,输入迁移源数据库中的值。

aws06_02

如果状态为“成功”,则端点连接测试成功。
单击“创建端点”并稍等片刻即可完成。

aws06_03

如果测试不成功,请检查以下内容:

  • 复制实例是在公有子网中创建的吗?
  • 复制实例的安全组中是否允许出站规则?
  • 您尝试连接的服务器的 FW(在 AWS 中为安全组)是否允许从复制实例进行访问?
    • (我还真没注意到这个)
      使用多可用区构建时,不仅允许 DMS 控制台中显示的全局 IP,还允许备用实例的全局 IP。
      在网络接口控制台中,描述字段中写有“DMSNetworkInterface”的接口用于 DMS。 aws06_04

4.创建端点(目标端点)

接下来,创建目标端点。

  • 端点类型:源端点
  • 选择RDS数据库实例:勾选
  • 端点标识符、目标引擎:自动选择RDS信息
  • 访问端点数据库:手动提供访问信息。
    将自动选择服务器名称、端口、用户名、RDS 信息。
    输入您在创建 RDS 时指定的密码。

aws06_05

如果状态为“成功”,则端点连接测试成功。
单击“创建端点”并稍等片刻即可完成。

aws06_06

至于目标端点,这次假设它与复制实例在同一个VPC中,所以如果RDS安全组中允许复制实例的私有IP,我认为测试会成功。

5、创建数据库迁移任务

接下来,创建数据库迁移任务。

aws06_07

数据库迁移任务是执行实际数据迁移的设置。

aws06_08

继续任务设置。

将其余部分保留为默认值。

aws06_09

表映射设置。 迁移源MySQL中已创建名为“mydb”的数据库。

  • 架构名称:mydb
  • 表名:%(通配符)

aws06_10

将其余设置保留为默认值。

单击“创建任务”开始数据迁移。

aws06_11

我也是这么想的,但是没有启动,所以我手动启动了。

aws06_12

aws06_13

6.确认

根据迁移的数据,任务将在短暂等待后完成。

aws06_14

您还可以检查每个表加载的行数。

aws06_15

详细日志也记录在 CloudWatch Logs 中。

aws06_16

概括

在本文中,我们实际使用 AWS Database Migration Service (AWS DMS) 介绍了将数据从 EC2 迁移到 RDS 的步骤,就像在本地一样。

这次,源和目标使用相同类型的数据库引擎迁移数据。
过去,我想大多数人都是使用mysqldump在MySQL系统之间迁移数据。

如本文所述,通过使用 AWS DMS,您可以从 AWS 控制台执行数据迁移工作,而无需直接登录目标数据库。
数据迁移设置也很容易执行,因为即使您不是 DBA 也可以配置它们。

不过,你仍然需要提前在AWS端创建VPC、RDS等,并且使用数据库的服务器也需要通过某种方式创建/迁移。
我觉得这是一个可以作为一个部分使用的服务,同时迁移整个系统。