

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

# 入门 AWS Database Migration Service
<a name="CHAP_GettingStarted"></a>

在以下教程中，您可以了解如何使用 AWS Database Migration Service (AWS DMS) 执行数据库迁移。

要执行数据库迁移，请采取以下步骤：

1. 按照中的步骤设置您的 AWS 账户[设置为 AWS Database Migration Service](CHAP_GettingStarted.SettingUp.md)。

1. 创建您的示例数据库和 Amazon EC2 客户端，以填充源数据库并测试复制。此外，创建基于 Amazon Virtual Private Cloud（Amazon VPC）服务的虚拟私有云（VPC），以容纳您的教程资源。要创建这些资源，请按照 [完成设置所需的先决条件 AWS Database Migration Service](CHAP_GettingStarted.Prerequisites.md)中的步骤操作。

1. 使用[示例数据库创建脚本](https://github.com/aws-samples/aws-database-migration-samples)填充源数据库。

1. 使用 DMS 架构转换将架构从源数据库转换为目标数据库。按照 [开始使用 DMS 架构转换](getting-started.md) 中的步骤操作。或者，如果您使用的是旧版 AWS Schema Conversion Tool (AWS SCT)，请按照中的步骤操作[迁移架构](CHAP_GettingStarted.SCT.md)。

1. 创建复制实例以执行迁移的所有过程。要执行此任务和以下任务，请执行[复制](CHAP_GettingStarted.Replication.md)中的步骤。

1. 指定源和目标数据库端点。有关创建端点的信息，请参阅[创建源和目标终端节点](CHAP_Endpoints.Creating.md)。

1. 创建一个任务来定义您要使用的表和复制过程，然后开始复制。有关创建数据库迁移任务的更多信息，请参阅[创建任务](CHAP_Tasks.Creating.md)。

1. 通过对目标数据库运行查询来验证复制是否在正常运行。

## 了解有关与合作的更多信息 AWS Database Migration Service
<a name="CHAP_GettingStarted.References"></a>

在本指南的后面部分，您将学习 AWS DMS 如何使用将数据迁移到使用最广泛的商业和开源数据库。

在准备和执行数据库迁移项目时，我们还建议您查看以下资源：
+ [AWS DMS Step-by-Step 迁移指南](https://docs.aws.amazon.com/dms/latest/sbs/DMS-SBS-Welcome.html) — 本指南提供了将数据迁移到的过程 step-by-step演练。 AWS
+ [AWS DMS API 参考](https://docs.aws.amazon.com/dms/latest/APIReference/Welcome.html) — 本参考详细描述了所有 API 操作。 AWS Database Migration Service 
+ [AWS CLI fo AWS DMS](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html) r — 本参考提供有关将 AWS Command Line Interface (AWS CLI) 与一起使用的信息 AWS DMS。

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

## 注册获取 AWS 账户
<a name="sign-up-for-aws"></a>

如果您没有AWS 账户，请完成以下步骤来创建一个。

**报名参加 AWS 账户**

1. 打开[https://portal.aws.amazon.com/billing/注册。](https://portal.aws.amazon.com/billing/signup)

1. 按照屏幕上的说明操作。

   在注册时，将接到电话或收到短信，要求使用电话键盘输入一个验证码。

   当您注册时AWS 账户，就会创建*AWS 账户根用户*一个。根用户有权访问该账户中的所有 AWS 服务 和资源。作为最佳安全实践，请为用户分配管理访问权限，并且只使用根用户来执行[需要根用户访问权限的任务](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

AWS注册过程完成后会向您发送一封确认电子邮件。您可以随时前往 [https://aws.amazon.com/](https://aws.amazon.com/)并选择 “**我的账户”，查看您当前的账户活动并管理您的账户**。

## 创建具有管理访问权限的用户
<a name="create-an-admin"></a>

注册后，请保护您的安全 AWS 账户 AWS 账户根用户AWS IAM Identity Center，启用并创建管理用户，这样您就不会使用 root 用户执行日常任务。

**保护你的 AWS 账户根用户**

1.  选择 **Root 用户**并输入您的AWS 账户电子邮件地址，以账户所有者的身份登录。[AWS 管理控制台](https://console.aws.amazon.com/)在下一页上，输入您的密码。

   要获取使用根用户登录方面的帮助，请参阅《AWS 登录 用户指南》**中的 [Signing in as the root user](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial)。

1. 为您的根用户启用多重身份验证（MFA）。

   有关说明，请参阅 I [A *M* 用户指南中的为AWS 账户根用户启用虚拟 MFA 设备（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html)。

**创建具有管理访问权限的用户**

1. 启用 IAM Identity Center。

   有关说明，请参阅**《AWS IAM Identity Center 用户指南》中的 [Enabling。AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html)

1. 在 IAM Identity Center 中，为用户授予管理访问权限。

   有关使用IAM Identity Center 目录作为身份源的教程，请参阅《[用户*指南》IAM Identity Center 目录中的使用默认设置配置AWS IAM Identity Center用户*访问权限](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html)。

**以具有管理访问权限的用户身份登录**
+ 要使用您的 IAM Identity Center 用户身份登录，请使用您在创建 IAM Identity Center 用户时发送到您的电子邮件地址的登录 URL。

  有关使用 IAM Identity Center 用户[登录的帮助，请参阅*AWS 登录用户指南*中的登录AWS访问门户](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html)。

**将访问权限分配给其他用户**

1. 在 IAM Identity Center 中，创建一个权限集，该权限集遵循应用最低权限的最佳做法。

   有关说明，请参阅《AWS IAM Identity Center 用户指南》**中的 [Create a permission set](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html)。

1. 将用户分配到一个组，然后为该组分配单点登录访问权限。

   有关说明，请参阅《AWS IAM Identity Center 用户指南》**中的 [Add groups](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html)。

# 完成设置所需的先决条件 AWS Database Migration Service
<a name="CHAP_GettingStarted.Prerequisites"></a>

在本节中，您可以学习的先决任务 AWS DMS，例如设置源数据库和目标数据库。作为这些任务的一部分，您还可以设置基于 Amazon VPC 服务的虚拟私有云（VPC）来容纳您的资源。此外，您还要设置一个 Amazon EC2 实例，用于填充源数据库并验证目标数据库上的复制。

**注意**  
填充源数据库最多需要 45 分钟。

在本教程中，您将创建一个 MariaDB 数据库作为源，并创建一个 PostgreSQL 数据库作为目标。此场景使用常用的低成本数据库引擎来演示复制。使用不同的数据库引擎演示了在异构平台之间迁移数据的 AWS DMS 功能。

本教程中使用美国西部（俄勒冈州）地区的资源。如果您想使用其他 AWS 区域，请改为在美国西部（俄勒冈）出现的任何地方指定您选择的区域。

**注意**  
为简单起见，您为本教程创建的数据库不使用加密或其他高级安全功能。您必须使用安全功能来保护生产数据库的安全。有关更多信息，请参阅 [Amazon RDS 中的安全性](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.html)。

有关先决步骤，请参阅以下主题。

**Topics**
+ [创建 VPC](#CHAP_GettingStarted.Prerequisites.VPC)
+ [创建 Amazon RDS 参数组](#CHAP_GettingStarted.Prerequisites.params)
+ [创建源 Amazon RDS 数据库](#CHAP_GettingStarted.Prerequisites.sdatabase)
+ [创建目标 Amazon RDS 数据库](#CHAP_GettingStarted.Prerequisites.tdatabase)
+ [创建 Amazon EC2 客户端](#CHAP_GettingStarted.Prerequisites.client)
+ [填充您的源数据库](#CHAP_GettingStarted.Prerequisites.Populate)

## 创建 VPC
<a name="CHAP_GettingStarted.Prerequisites.VPC"></a>

在本节中，您将创建一个 VPC 来容纳您的 AWS 资源。在使用 AWS 资源时，使用 VPC 是最佳实践，这样您的数据库、Amazon EC2 实例、安全组等才有逻辑组织和安全。

为教程资源使用 VPC 还可以确保您在完成教程后删除使用的所有资源。您必须先删除 VPC 包含的所有资源，然后才能删除 VPC。

**创建 VPC 以与配合使用 AWS DMS**

1. 登录 AWS 管理控制台 并打开 Amazon VPC 控制台，网址为[https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)。

1. 在导航窗格中，选择 **VPC 控制面板**，然后选择**创建 VPC**。

1. 在**创建 VPC** 页面上，输入以下选项：
   + **要创建的资源**：**VPC 等**
   + **名称标签自动生成**：选择**自动生成**，然后输入 **DMSVPC**。
   + **IPv4 区块**:**10.0.1.0/24**
   + **IPv6 CIDR 块**：**没有 IPv6 CID** R 块
   + **租赁**：**默认**
   + **可用区数量**：2
   + **公有子网的数量**：2
   + **私有子网的数量**：2
   + **NAT 网关（\$1）**：**无**
   + **VPC 端点**：**无**

   选择**创建 VPC**。

1. 在导航窗格上，选择**您的 VPCs**。记下 **DMSVPC** 的 VPC ID。

1. 在导航窗格中，选择**安全组**。

1. 选择名为 **default** 的组，该组的 **VPC ID** 与您记下的 **DMSVPC** 的 ID 匹配。

1. 选择**入站规则**选项卡，然后选择**编辑入站规则**。

1. 选择**添加规则**。**添加一条类型为 **mySQL/Aurora** 的规则，然后选择 **Anywhere-IPv4** 作为源。**

1. 再次选择**添加规则**。**添加 Postgre **SQL** 类型的规则，然后**选择 Anyw IPv4** here-作为源。**

1. 选择**保存规则**。

## 创建 Amazon RDS 参数组
<a name="CHAP_GettingStarted.Prerequisites.params"></a>

要为的源数据库和目标数据库指定设置 AWS DMS，请使用 Amazon RDS 参数组。要允许数据库之间的初始复制和持续复制，请确保配置以下内容：
+ 源数据库的二进制日志，因此 AWS DMS 可以确定需要复制哪些增量更新。
+ 目标数据库的复制角色，因此在初始数据传输期间 AWS DMS 会忽略外键约束。使用此设置， AWS DMS 可以乱序迁移数据。

**创建参数组以与一起使用 AWS DMS**

1. 在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 处打开 Amazon RDS 控制台。

1. 在导航窗格中，选择**参数组**。

1. 在**参数组**页面上，选择**创建参数组**。

1. 在**创建参数组**页上，输入以下设置：
   + **参数组系列**：**mariadb10.6**
   + **组名：****dms-mariadb-parameters**
   + **描述**：**Group for specifying binary log settings for replication**

   选择**创建**。

1. 在**参数组**页面上，选择 **dms-mariadb-parameters**，然后在**dms-mariadb-parameters**页面上选择**编辑**。

1. 将以下参数设置为以下值之一：
   + **binlog\$1checksum**：**NONE**
   + **binlog\$1format**：**ROW**

   选择**保存更改**。

1. 在**参数组**页面上，再次选择**创建参数组**。

1. 在**创建参数组**页上，输入以下设置：
   + **参数组家族**：p **ost** gres16
   + **组名：****dms-postgresql-parameters**
   + **描述**：**Group for specifying role setting for replication**

   选择**创建**。

1. 在**参数组**页面上，选择**dms-postgresql-parameters**。

1. **在该**dms-postgresql-parameters**页面上，选择**编辑**，然后将 **session\$1replication\$1role 参数设置为副本**。**请注意，**session\$1replication\$1role** 参数不在参数的第一页上。使用分页控件或搜索字段查找该参数。

1. 选择**保存更改**。

## 创建源 Amazon RDS 数据库
<a name="CHAP_GettingStarted.Prerequisites.sdatabase"></a>

使用以下过程创建源 Amazon RDS 数据库。

**创建源 Amazon RDS for MariaDB 数据库**

1. 在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 处打开 Amazon RDS 控制台。

1. 在**控制面板**页面上，选择**数据库**部分中的**创建数据库**。不要在页面顶部的**尝试适用于 MySQL 和 PostgreSQL 的新 Amazon RDS Multi-AZ 部署选项**部分中选择**创建数据库**。

1. 在**创建数据库**页面上，设置以下选项：
   + **选择数据库创建方法**：选择**标准创建**。
   + **引擎选项**：对于**引擎类型**，请选择 **MariaDB**。对于**版本**，请保留选择 **MariaDB 10.6.14**。
   + **模板**：选择**开发/测试**。
   + **设置**：
     + **数据库实例标识符**：输入 **dms-mariadb**。
     + 在**凭证设置**部分，输入以下内容：
       + **主用户名**：保留为 **admin**。
       + 取消选中 S ** AWS ecrets Manager 中的管理主凭证**。
       + **自动生成密码**：保持未选中状态。
       + **主密码**：输入 **changeit**。
       + **确认密码**：再次输入 **changeit**。
   + **实例配置**：
     + **数据库实例类**：保留选中**标准类**。
     + 对于**数据库实例类别**，请选择 **db.m5.large**。
   + **存储**：
     + 清除**启用存储自动缩放**复选框。
     + 其余设置保持原样。
   + **可用性和持久性**：保留选中**不要创建备用实例**。
   + **Connectivity (连接)**：
     + **计算资源**：保留**不连接到 EC2 计算资源**
     + **网络类型**：保持**IPv4**选中状态。
     + **虚拟私有云**：**DMSVPC-vpc**
     + **公有访问权限**：**是**。您必须启用公有访问权限才能使用 AWS Schema Conversion Tool。
     + **可用区**：**us-west-2a**
     + 其余设置保持原样。
   + **数据库身份验证**：保留选中**密码身份验证**。
   + 在**监控**下，清除**开启性能详情**复选框。展开**其他配置**部分，然后清除**启用增强监控**复选框。
   + 展开**其他配置**：
     + 在**数据库选项**下，对于**初始数据库名称**，键入 **dms\$1sample**。
     + 在**数据库参数组**下，选择**dms-mariadb-parameters**。
     + 对于**选项组**，保留选中 **default:mariadb-10-6**。
     + 在 **Backup**（备份）下，执行以下操作：
       + 保留选中**启用自动备份**。您的源数据库必须启用自动备份才能支持持续复制。
       + 对于**备份保留期**，选择 **1 天**。
       + 在**备份窗口**中，保留选中**无首选项**。
       + 清除**将标签复制到快照**复选框。
       + 取消选中 “**在其他 AWS 区域启用复制**”。
     + 在**加密**下，清除**启用加密**复选框。
     + **日志导出**部分保留不变。
     + 在**维护**下，清除**允许自动次要版本升级**复选框，并将**维护窗口**设置保留为**无首选项**。
     + 保留**启用删除保护**未选中。

1. 选择**创建数据库**。

## 创建目标 Amazon RDS 数据库
<a name="CHAP_GettingStarted.Prerequisites.tdatabase"></a>

重复前面的步骤来创建您的目标 Amazon RDS 数据库，并进行以下更改。

**创建目标 RDS for PostgreSQL 数据库**

1. 重复上述过程的步骤 1 和 2。

1. 在**创建数据库**页面上，设置相同的选项，但以下选项除外：

   1. 对于**引擎选项**，选择 **PostgreSQL**。

   1. 对于**版本**，请选择一个可用的 **PostgreSQL 16** 版本。

   1. 对于 **DB instance identifier**（数据库实例标识符），输入 **dms-postgresql**。

   1. 对于**主用户名**，请保留选中 **postgres**。

   1. 对于**数据库参数组**，选择**dms-postgresql-parameters**。

   1. 清除**启用自动备份**。

1. 选择**创建数据库**。

## 创建 Amazon EC2 客户端
<a name="CHAP_GettingStarted.Prerequisites.client"></a>

在本节中，您将创建一个 Amazon EC2 客户端。您可以使用此客户端在源数据库中填充要复制的数据。您还可以使用此客户端，通过对目标数据库运行查询来验证复制。

与通过互联网访问您的数据库相比，使用 Amazon EC2 客户端访问数据库具有以下优势：
+ 您可以限制只有同一 VPC 中的客户端才能访问您的数据库。
+ 我们已经确认您在本教程中使用的工具可以在 Amazon Linux 2023 上运行且易于安装，推荐在本教程中使用这些工具。
+ VPC 中组件之间的数据操作，性能通常比通过互联网执行的数据操作要好。

**创建和配置 Amazon EC2 客户端以填充源数据库**

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon EC2 控制台。

1. 在**控制面板**上，选择**启动实例**。

1. 在**启动实例**页面上，输入以下值：

   1. 在**名称和标签**部分，对于**名称**，输入 **DMSClient**。

   1. 在**应用程序和操作系统映像（亚马逊机器映像）**部分，按原样保留设置。

   1. 在**实例类型**部分中，选择 **t2.xlarge**。

   1. 在**密钥对（登录）**部分中，选择**新建密钥对**。

   1. 在**创建密钥对**页面上，输入以下内容：
      + **Key pair name**：**DMSKeyPair**
      + **密钥对类型**：保留 **RSA**。
      + **私钥文件格式**：在 MacOS 或 Linux 上为 OpenSSH 选择 **pem**，在 Windows 上为 PuTTY 选择 **ppk**。

      出现提示时保存密钥文件。
**注意**  
您也可以使用现有的 Amazon EC2 密钥对，而不必创建新的密钥对。

   1. 在**网络设置**部分中，选择**编辑**。选择以下设置：
      + **VPC – *必填***：选择具有您记下的 **DMSVPC-vpc** VPC 的 ID 的 VPC。
      + **子网**：选择第一个公有子网。
      + **自动分配公有 IP**：选择**启用**。

      原样保留其余设置，然后选择**启动实例**。

## 填充您的源数据库
<a name="CHAP_GettingStarted.Prerequisites.Populate"></a>

在本节中，您将找到源数据库和目标数据库的端点以供稍后使用，并使用以下工具填充源数据库：
+ Git，用于下载填充源数据库的脚本。
+ MariaDB 客户端，运行此脚本。

### 获取端点
<a name="CHAP_GettingStarted.Prerequisites.Populate.Hosts"></a>

查找并记下 RDS for MariaDB 和 RDS for PostgreSQL 数据库实例的端点，以备稍后使用。

**查找数据库实例的端点**

1. 登录 AWS 管理控制台 并打开 Amazon RDS 控制台，网址为[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**数据库**。

1. 选择 **dms-mariadb** 数据库，并记下该数据库的**端点**值。

1. 对 **dms-postgresql** 数据库重复之前的步骤。

### 填充您的源数据库
<a name="CHAP_GettingStarted.Prerequisites.Populate.Git"></a>

接下来，连接到您的客户端实例，安装必要的软件，从 Git 下载 AWS 示例数据库脚本，然后运行脚本来填充源数据库。

**填充您的源数据库**

1. 使用您在前面步骤中保存的主机名和公有密钥连接到客户端实例。

   有关连接到 Amazon EC2 实例的更多信息，请参阅《Amazon EC2 用户指南》**中的[访问实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html)。
**注意**  
如果您使用的是 PuTTY，请在**连接**设置页面上启用 TCP 保持连接，这样您的连接就不会因为处于不活动状态而超时。

1. 安装 Git、MariaDB 和 PostgreSQL。根据需要确认安装。

   ```
   $ sudo yum install git
   $ sudo dnf install mariadb105
   $ sudo dnf install postgresql15
   ```

1. 运行以下命令从中下载数据库创建脚本 GitHub。

   ```
   git clone https://github.com/aws-samples/aws-database-migration-samples.git
   ```

1. 切换到 `aws-database-migration-samples/mysql/sampledb/v1/` 目录。

1. 运行如下命令。提供您之前记下的源 RDS 实例的端点，例如 `dms-mariadb.cdv5fbeyiy4e.us-east-1.rds.amazonaws.com`。

   ```
   mysql -h dms-mariadb.abcdefghij01.us-east-1.rds.amazonaws.com -P 3306 -u admin -p dms_sample < ~/aws-database-migration-samples/mysql/sampledb/v1/install-rds.sql
   ```

1. 运行数据库创建脚本。该脚本最多需要 45 分钟来创建架构和填充数据。您可以放心地忽略脚本显示的错误和警告。

# 使用将源架构迁移到目标数据库 AWS SCT
<a name="CHAP_GettingStarted.SCT"></a>

我们建议使用 DMS 架构转换来转换源数据库架构。有关更多信息，请参阅 [开始使用 DMS 架构转换](getting-started.md)。如果您更喜欢使用旧版 AWS Schema Conversion Tool，请按照以下步骤操作。

**使用将源架构迁移到目标数据库 AWS SCT**

1. 安装 AWS Schema Conversion Tool。有关更多信息，请参阅《AWS 用户指南》**中的[安装、验证和更新 AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Installing.html#CHAP_Installing.Procedure)。

   下载适用于 MySQL 和 PostgreSQL 的 JDBC 驱动程序时，请记下驱动程序的保存位置，以在工具提示您输入驱动程序的位置时使用。

1. 打开 AWS Schema Conversion Tool. 请选择**文件**，然后选择**新建项目**。

1. 在**新建项目**窗口中，设置以下值：
   + 将**项目名称**设置为 **DMSProject**。
   + 保持**位置**不变，将 AWS SCT 项目存储在默认文件夹中。

   选择**确定**。

1. 选择**添加源**以将源 MySQL 数据库添加到项目中，然后选择 **MySQL** 并选择**下一步**。

1. 在**添加源**页面上，设置以下值：
   + **连接名称**：**source**
   + **服务器名称**：输入您之前记下的 MySQL 数据库的端点。
   + **服务器端口**：**3306**
   + **用户名**：**admin**
   + **密码**：**changeit**

1. 选择**添加目标**以将目标 Amazon RDS for PostgreSQL 数据库添加到项目中，然后选择 **Amazon RDS for PostgreSQL**。选择 **下一步**。

1. 在**添加目标**页面上，设置以下值：
   + **连接名称**：**target**
   + **服务器名称**：输入您之前记下的 PostgreSQL 数据库的端点。
   + **服务器端口**：**5432**
   + **数据库**：输入 PostgreSQL 数据库的名称。
   + **用户名**：**postgres**
   + **密码**：**changeit**

1. 在左侧窗格中，选择**架构**下的 **dms\$1sample**。在右侧窗格中，选择您的目标 Amazon RDS for PostgreSQL 数据库。选择**创建映射**。您可以向单个 AWS SCT 项目添加多个映射规则。有关映射规则的更多信息，请参阅[创建映射规则](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Mapping.html)。

1. 选择**主视图**。

1. 在左侧窗格中，选择**架构**下的 **dms\$1sample**。打开上下文（右键单击）菜单并选择**转换架构**。确认该操作。

   在工具转换了架构后，**dms\$1sample** 架构将显示在右窗格中。

1. 在右侧窗格的**架构**下，打开 **dms\$1sample** 的上下文（右键单击）菜单，然后选择**应用到数据库**。确认该操作。

验证架构迁移已完成。执行以下步骤。

**检查架构迁移**

1. 连接到您的 Amazon EC2 客户端。

1. 使用以下命令启动 PSQL 客户端。指定您的 PostgreSQL 数据库端点，并在出现提示时提供数据库密码。

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

1. 查询其中一个（空）表以验证是否正确 AWS SCT 应用了架构，

   ```
   dms_sample=> SELECT * from dms_sample.player;
    id | sport_team_id | last_name | first_name | full_name
   ----+---------------+-----------+------------+-----------
   (0 rows)
   ```

# 为设置复制 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 密钥对。