

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 为设置复制 AWS Database Migration Service
<a name="CHAP_GettingStarted.Replication"></a>

在此主题中，您将在源数据库和目标数据库之间设置复制。

## 步骤 1：使用 AWS DMS 控制台创建复制实例
<a name="CHAP_GettingStarted.Replication.ReplicationInstance"></a>

要开始使用 AWS DMS，请创建一个复制实例。

*复制实例*执行源端点和目标端点之间的实际数据迁移。您的实例需要足够的存储空间和处理能力，以便执行将数据从源数据库迁移到目标数据库的任务。此复制实例的大小应取决于要迁移的数据量和您的实例需要执行的任务。有关复制实例的更多信息，请参阅[使用 AWS DMS 复制实例](CHAP_ReplicationInstance.md)。

![\[创建复制实例\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/images/datarep-create-replication-30a.png)


**使用控制台创建复制实例**

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/dms/v2](https://console.aws.amazon.com/dms/v2/)/上打开 AWS DMS 控制台。

1. 在导航窗格中，选择**复制实例**，然后选择**创建复制实例**。

1. 在**创建复制实例**页中，指定您的复制实例配置：

   1. 对于**名称**，请输入 **DMS-instance**。

   1. 对于**描述**，请输入复制实例的简短描述（可选）。

   1. 对于**实例类**，请保持选中 **dms.t3.medium**。

      该实例需要具有足够的存储空间、网络和处理能力用于进行迁移。有关如何选择实例类的更多信息，请参阅[为您的迁移选择正确的 AWS DMS 复制实例](CHAP_ReplicationInstance.Types.md)。

   1. 对于**引擎版本**，请接受默认值。

   1. 对于**多可用区**，请选择**开发或测试工作负载（单可用区）**。

   1. 对于**分配的存储空间（GiB）**，请接受默认值 50 GiB。

      在中 AWS DMS，存储主要由日志文件和缓存的事务使用。对于缓存事务，仅在需要将缓存的事务写入磁盘时消耗存储空间。因此， AWS DMS 不会占用大量存储空间。

   1. 对于**网络类型**，请选择**IPv4**。

   1. 对于 **VPC**，请选择 **DMSVPC**。

   1. 对于**复制子网组**，请保留当前选择的复制子网组。

   1. 清除**可公开访问**。

1. 选择**高级安全和网络配置**选项卡，根据需要设置网络和加密设置值。

   1. 对于**可用区**，选择 **us-west-2a**。

   1. 对于 **VPC 安全组**，如果尚未选择，请选择**默认**安全组。

   1. 对于 **AWS KMS key**，保留**（默认值）aws/dms** 处于选中状态。

1. 保留**维护**选项卡的设置不变。默认值是从每个 AWS 区域的 8 小时时间段中随机选择一个 30 分钟的窗口，发生在一周中的随机某一天。

1. 选择**创建**。

AWS DMS 创建用于执行迁移的复制实例。

## 步骤 2：指定源和目标端点
<a name="CHAP_GettingStarted.Replication.Endpoints"></a>

在创建复制实例时，您可以为之前创建的 Amazon RDS 指定源和目标数据存储端点。您可以单独创建每个端点。

![\[创建端点\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/images/datarep-create-endpoint-30a.png)


**使用 AWS DMS 控制台指定源端点和数据库端点**

1. 在控制台的导航窗格中，选择**端点**，然后选择**创建端点**。

1. 在**创建端点**页面上，选择**源**端点类型。选中**选择 RDS 数据库实例**复选框，然后选择 **dms-mariadb** 实例。

1. 在**端点配置**部分，为**端点标识符**输入 **dms-mysql-source**。

1. 对于**源引擎**，请保留 **MySQL** 选择。

1. 对于**端点数据库的访问权限**，请选择**手动提供访问信息**。验证**端口**、**安全套接字层（SSL）模式**、**用户名**和**密码**是否正确。

1. 选择**测试端点连接（可选）**选项卡。对于 **VPC**，请选择 **DMSVPC**。

1. 对于**复制实例**，请保留 **dms-instance** 选择。

1. 选择**运行测试**。

   选择 **Run test** 后，使用您提供的详细信息 AWS DMS 创建端点并连接到该端点。如果连接失败，请编辑端点定义并再次测试连接。您也可以手动删除端点。

1. 测试成功后，选择**创建端点**。

1. 使用 AWS DMS 控制台指定目标数据库端点。为此，请使用以下设置重复前面的步骤：
   + **端点类型**：**目标端点**
   + **RDS 实例**：**dms-postgresql**
   + **端点标识符**：**dms-postgresql-target**
   + **目标引擎**：保持 **PostgreSQL** 选中状态。

提供完终端节点的所有信息后，将 AWS DMS 创建源端点和目标端点以供数据库迁移期间使用。

## 步骤 3：创建任务并迁移数据
<a name="CHAP_GettingStarted.Replication.Tasks"></a>

在此步骤中，您将创建一个任务，以在所创建的数据库之间迁移数据。

![\[创建迁移任务\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/images/datarep-create-task-20a.png)


**创建迁移任务并开始数据库迁移**

1. 在控制台导航窗格中，选择**数据库迁移任务**，然后选择**创建任务**。**创建数据库迁移任务**页面打开。

1. 在**任务配置**部分，指定以下任务选项：
   + **任务标识符**：输入 **dms-task**。
   + **复制实例**：选择您的复制实例 (**dms-instance-vpc-*<vpc id>***)。
   + **源数据库端点**：选择**dms-mysql-source**。
   + **目标数据库端点**：选择**dms-postgresql-target**。
   + **迁移类型**：选择**迁移现有数据并复制持续更改**。

1. 选择**任务设置**选项卡。设置以下设置：
   + **目标表准备模式**：**不执行任何操作**
   + **在完全加载完成后停止任务**：**不停止**

1. 选择**表映射**选项卡，然后展开**选择规则**。选择**添加新选择规则**。设置以下设置：
   + **架构**：**输入架构**
   + **架构名称**：**dms\$1sample**

1. 选择**迁移任务启动配置**选项卡。选择 “**从迁移前评估开始（推荐）**”，以便在开始任务之前运行评估。或者，您可以选择 “**创建时自动启动**” 以立即开始迁移，或者选择 “**仅运行评估**” 以评估而不启动任务。  
![\[创建迁移任务\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/images/datarep-create-task-21.png)

1. 选择**创建任务**。

AWS DMS 然后创建迁移任务并启动它。初始数据库复制需要大约 10 分钟。在 AWS DMS 完成数据迁移之前，请务必完成教程中的下一步。

## 步骤 4：测试复制
<a name="CHAP_GettingStarted.Replication.Monitoring"></a>

在本节中，您将在初始复制期间和之后将数据插入源数据库，并在目标数据库中查询插入的数据。

**测试复制**

1. 确保您的数据库迁移任务显示的状态为**正在运行**，但是您在上一步中启动的初始数据库复制尚未完成。

1. 连接到 Amazon EC2 客户端，并使用以下命令启动 MySQL 客户端。提供您的 MySQL 数据库端点。

   ```
   mysql -h dms-mysql.abcdefg12345.us-west-2.rds.amazonaws.com -P 3306 -u admin -pchangeit dms_sample
   ```

1. 运行以下命令以将记录插入到源数据库中。

   ```
   MySQL [dms_sample]> insert person (full_name, last_name, first_name) VALUES ('Test User1', 'User1', 'Test');
   Query OK, 1 row affected (0.00 sec)
   ```

1. 退出 MySQL 客户端。

   ```
   MySQL [dms_sample]> exit
   Bye
   ```

1. 在复制完成之前，在目标数据库中查询新记录。

   在 Amazon EC2 实例中，使用以下命令，提供您的目标数据库端点来连接到目标数据库。

   ```
   psql \
      --host=dms-postgresql.abcdefg12345.us-west-2.rds.amazonaws.com \
      --port=5432 \
      --username=postgres \
      --password \
      --dbname=dms_sample
   ```

   在系统提示时提供密码（**changeit**）。

1. 在复制完成之前，在目标数据库中查询新记录。

   ```
   dms_sample=> select * from dms_sample.person where first_name = 'Test';
    id | full_name | last_name | first_name
   ----+-----------+-----------+------------
   (0 rows)
   ```

1. 在迁移任务正在运行时，您可以实时监控数据库迁移的进度：
   + 在 DMS 控制台导航窗格中，选择**数据库迁移任务**。
   + 选择 **dms-task**。
   + 选择**表统计数据**。

   有关监控的更多信息，请参阅[监控 AWS DMS 任务](CHAP_Monitoring.md)。

1. 复制完成后，再次向目标数据库查询新记录。 AWS DMS 在初始复制完成后迁移新记录。

   ```
   dms_sample=> select * from dms_sample.person where first_name = 'Test';
      id    | full_name  | last_name | first_name
   ---------+------------+-----------+------------
    7077784 | Test User1 | User1     | Test
   (1 row)
   ```

1. 退出 psql 客户端。

   ```
   dms_sample=> quit
   ```

1. 重复步骤 1，再次连接到源数据库。

1. 在 `person` 表中插入另一条记录。

   ```
   MySQL [dms_sample]> insert person (full_name, last_name, first_name) VALUES ('Test User2', 'User2', 'Test');
   Query OK, 1 row affected (0.00 sec)
   ```

1. 重复步骤 3 和 4 以断开源数据库的连接并连接到目标数据库。

1. 再次在目标数据库中查询复制的数据。

   ```
   dms_sample=> select * from dms_sample.person where first_name = 'Test';
      id    | full_name  | last_name | first_name
   ---------+------------+-----------+------------
    7077784 | Test User1 | User1     | Test
    7077785 | Test User2 | User2     | Test
   (2 rows)
   ```

## 步骤 5：清理 AWS DMS 资源
<a name="CHAP_GettingStarted.Replication.Deleting"></a>

完成本入门教程后，您可以删除创建的资源。您可以使用 AWS 控制台将其删除。请确保在删除复制实例和端点之前删除迁移任务。

**使用控制台删除迁移任务**

1. 在 AWS DMS 控制台导航窗格上，选择**数据库迁移任务**。

1. 选择 **dms-task**。

1. 依次选择**操作**和**删除**。

**使用控制台删除复制实例**

1. 在 AWS DMS 控制台导航窗格上，选择**复制实例**。

1. 选择 **DMS-instance**。

1. 依次选择**操作**和**删除**。

AWS DMS 删除复制实例并将其从 “**复制实例**” 页面中删除。

**使用控制台删除端点**

1. 在 AWS DMS 控制台导航窗格上，选择**终端节点**。

1. 选择 **dms-mysql-source**。

1. 依次选择**操作**和**删除**。

删除 AWS DMS 资源后，请务必同时删除以下资源。有关删除其他服务中资源的帮助，请参阅每项服务的文档。
+ 您的 RDS 数据库。
+ 您的 RDS 数据库参数组。
+ 您的 RDS 子网组。
+ 与您的数据库和复制实例一起创建的任何 Amazon CloudWatch 日志。
+ 为您的 Amazon VPC 和 Amazon EC2 客户端创建的安全组。请确保将 **launch-wizard-1** 安全组的入站规则从**默认**中删除，这是删除这些安全组所必需的。
+ Amazon EC2 客户端。
+ Amazon VPC。
+ Amazon EC2 客户端的 Amazon EC2 密钥对。