使用 AWS Database Migration Service 将 EC2 数据库自动迁移到 Amazon RDS - Amazon Relational Database Service

使用 AWS Database Migration Service 将 EC2 数据库自动迁移到 Amazon RDS

您可以使用 RDS 控制台将 EC2 数据库迁移到 RDSRDS 使用 AWS Database Migration Service(AWS DMS)迁移您的源 EC2 数据库。AWS DMS 允许您将关系数据库迁移到 AWS 云中。有关 AWS Database Migration Service 的更多信息,请参阅《AWS Database Migration Service 用户指南》中的什么是 AWS Database Migration Service?

要开始迁移,您必须创建等效的 RDS 数据库实例,以将数据迁移到其中。创建目标数据库后,您可以将 EC2 数据库导入其中。对于小于 1 TiB 的源数据库,此迁移操作可减少将数据迁移到 RDS 所需的时间和资源。

概览

RDS 控制台允许您将 EC2 数据库迁移到等效的 RDS 数据库中。您必须创建 RDS 数据库,才能从控制台进行迁移。

您可以为以下数据库引擎迁移 EC2 数据库:

  • MySQL

  • MariaDB

  • PostgreSQL

该迁移过程涉及到以下步骤:

  • RDS 中创建等效的数据库。为了使这些数据库具有等效性,它们必须具有相同的数据库引擎和兼容的引擎版本。它们还必须位于同一 VPC 中。有关创建数据库的说明,请参阅 创建 Amazon RDS 数据库实例

  • 选择数据库的复制类型:

    • 完全加载迁移RDS 将完整的源数据库复制到目标数据库,并在必要时在目标中创建新表。

      注意

      此选项会导致您的 RDS 数据库中断。

    • 完全加载和更改数据捕获(CDC)迁移 – 与完全加载迁移类似,使用此选项,RDS 会将完整的源数据库复制到目标数据库。但是,在完全加载迁移之后,RDS 会将源中捕获的任何更改应用于目标数据库。更改数据捕获通过使用数据库引擎的本机 API 来收集对数据库日志的更改。

      注意

      此选项会导致您的 RDS 数据库中断。

    • 更改数据捕获(CDC)– 使用此选项可使您的目标数据库在迁移过程中保持可用。RDS 会将源数据库中正在进行的更改迁移到目标数据库。

  • RDS 会创建必要的联网资源来促进迁移。RDS 在创建所需资源后,会通知您已创建的资源并允许您启动数据传输。

    完成迁移所需的时间取决于复制的类型和源数据库的大小。

先决条件

MySQL 和 MariaDB

在开始将 MySQL 或 MariaDB 数据库用作源数据库之前,请确保满足以下先决条件。这些先决条件适用于 AWS 托管的源。

您必须拥有具有复制管理员角色的 AWS DMS 的账户。该角色需要以下权限:

  • REPLICATION CLIENT – 仅 CDC 任务需要此权限。换而言之,full-load-only 任务不需要此权限。

  • REPLICATION SLAVE – 仅 CDC 任务需要此权限。换而言之,full-load-only 任务不需要此权限。

AWS DMS 用户还必须具有为复制指定的源表的 SELECT 权限。

如果您使用 MySQL 特定的迁移前评测功能,请授予以下权限。

grant select on mysql.user to <dms_user>; grant select on mysql.db to <dms_user>; grant select on mysql.tables_priv to <dms_user>; grant select on mysql.role_edges to <dms_user> #only for MySQL version 8.0.11 and higher

PostgreSQL

在从 AWS 托管的 PostgreSQL 源数据库迁移数据之前,请执行以下操作:

  • 我们建议您使用具有 PostgreSQL 数据库实例所需最低权限的 AWS 用户账户作为 AWS DMS 的 PostgreSQL 源端点的用户账户。建议不要使用主账户。该账户必须具有 rds_superuserrds_replication 角色。rds_replication 角色可授予管理逻辑时隙和使用逻辑时隙流式处理数据的权限。

注意

一些 AWS DMS 事务在被 DMS 引擎再次使用之前会空闲一段时间。在 PostgreSQL 版本 9.6 及更高版本中使用参数 idle_in_transaction_session_timeout,能够导致空闲事务超时并失败。

限制

以下限制适用于自动迁移过程:

  • 您的目标数据库状态必须为可用才能开始源数据库迁移。

  • 当从 MySQL 源数据库迁移时,您的 RDS 账户必须具有复制管理员角色。您还必须为该角色应用适当的权限。

  • EC2 实例和目标数据库必须位于同一 VPC 中。

  • 使用从 EC2 数据库迁移数据操作时,您无法将 EC2 数据库迁移到以下目标数据库:

    • 作为集群成员的数据库

    • Oracle、SQL Server 和 Db2 数据库

    • MySQL 版本低于 5.7 的数据库

    • PostgreSQL 版本低于 10.4 的数据库

    • MariaDB 版本低于 10.2 的数据库