

# 使用 AWS Database Migration Service 将 EC2 数据库自动迁移到 Amazon Aurora
<a name="USER_DMS_migration"></a>

您可以使用 Aurora 控制台将 EC2 数据库迁移到 Aurora。Aurora 使用 AWS Database Migration Service（AWS DMS）迁移您的源 EC2 数据库。AWS DMS 允许您将关系数据库迁移到 AWS 云中。有关 AWS Database Migration Service 的更多信息，请参阅《AWS Database Migration Service 用户指南》**中的[什么是 AWS Database Migration Service？](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)。

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

## 概述
<a name="USER_DMS_migration-overview"></a>

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

您可以为以下数据库引擎迁移 EC2 数据库：
+ MySQL
+ PostgreSQL

该迁移过程涉及到以下步骤：
+ 在 Aurora 中创建等效的数据库。为了使这些数据库具有等效性，它们必须具有相同的数据库引擎和兼容的引擎版本。它们还必须位于同一 VPC 中。有关创建数据库的说明，请参阅 [创建 Amazon Aurora 数据库集群](Aurora.CreateInstance.md) 。
+ 选择数据库的复制类型：
  + **完全加载迁移** – Aurora 将完整的源数据库复制到目标数据库，并在必要时在目标中创建新表。
**注意**  
此选项会导致您的 Aurora 数据库中断。
  + **完全加载和更改数据捕获（CDC）迁移** – 与完全加载迁移类似，使用此选项，Aurora 会将完整的源数据库复制到目标数据库。但是，在完全加载迁移之后，Aurora 会将源中捕获的任何更改应用于目标数据库。更改数据捕获通过使用数据库引擎的本机 API 来收集对数据库日志的更改。
**注意**  
此选项会导致您的 Aurora 数据库中断。
  + **更改数据捕获（CDC）**– 使用此选项可使您的目标数据库在迁移过程中保持可用。Aurora 会将源数据库中正在进行的更改迁移到目标数据库。
+ Aurora 会创建必要的联网资源来促进迁移。Aurora 在创建所需资源后，会通知您已创建的资源并允许您启动数据传输。

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

## 先决条件
<a name="USER_DMS_migration-Prerequisites"></a>

### MySQL
<a name="USER_DMS_migration-Prerequisites.MySQL"></a>

在开始将 MySQL 数据库用作源数据库之前，请确保满足以下先决条件。这些先决条件适用于 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
<a name="USER_DMS_migration-Prerequisites.PostgreSQL"></a>

在从 AWS 托管的 PostgreSQL 源数据库迁移数据之前，请执行以下操作：
+ 我们建议您使用具有 PostgreSQL 数据库实例所需最低权限的 AWS 用户账户作为 AWS DMS 的 PostgreSQL 源端点的用户账户。建议不要使用主账户。该账户必须具有 `rds_superuser` 和 `rds_replication` 角色。`rds_replication` 角色可授予管理逻辑时隙和使用逻辑时隙流式处理数据的权限。

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

## 限制
<a name="USER_DMS_migration-Limitations"></a>

以下限制适用于自动迁移过程：
+ 您的目标数据库状态必须为**可用**才能开始源数据库迁移。
+ 当从 MySQL 源数据库迁移时，您的 Aurora 账户必须具有复制管理员角色。您还必须为该角色应用适当的权限。
+ EC2 实例和目标数据库必须位于同一 VPC 中。
+ 使用**从 EC2 数据库迁移数据**操作时，您无法将 EC2 数据库迁移到以下目标数据库：
  + Aurora global database
  + Aurora Limitless database
  + Aurora Serverless v1
  + MySQL 版本低于 5.7 的数据库
  + PostgreSQL 版本低于 10.4 的数据库