AWS Database Migration Service
用户指南 (版本 API Version 2016-01-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

演练:从 MongoDB 迁移到 Amazon DocumentDB

以下演练将引导您完成从 MongoDB 迁移到 Amazon DocumentDB(与 MongoDB 兼容) 的过程。在本演练中,您将执行以下操作:

  • 在 Amazon EC2 实例上安装 MongoDB。

  • 使用示例数据填充 MongoDB。

  • 创建一个 AWS DMS 复制实例、源终端节点(用于 MongoDB)和目标终端节点(用于 Amazon DocumentDB)。

  • 运行 AWS DMS 任务,以将源终端节点中的数据迁移到目标终端节点。

重要

开始之前,请确保在默认 Virtual Private Cloud (VPC) 中启动 Amazon DocumentDB 集群。有关更多信息,请参阅 Amazon DocumentDB 开发人员指南 中的入门

步骤 1:启动 Amazon EC2 实例

对于此演练,您将启动默认 VPC 中的 Amazon EC2 实例。

启动 Amazon EC2 实例

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 选择 Launch Instance (启动实例),然后执行以下操作:

    1. Choose an Amazon Machine Image (AMI) (选择 Amazon 系统映像 (AMI)) 页面的 AMI 列表顶部,转到 Amazon Linux AMI 并选择 Select (选择)

    2. Choose an Instance Type (选择实例类型) 页面的实例类型列表顶部,选择 t2.micro。然后选择 Next: Configure Instance Details

    3. Configure Instance Details (配置实例详细信息) 页面上,为 Network (网络) 选择您的默认 VPC。然后选择 Next: Add Storage (下一步: 添加存储)

    4. Add Storage (添加存储) 页面上,通过选择 Next: Add Tags (下一步: 添加标签) 跳过此步骤。

    5. Add Tags (添加标签) 页面上,通过选择 Next: Configure Security Group (下一步: 配置安全组) 跳过此步骤。

    6. Configure Security Group (配置安全组) 页面上,执行以下操作:

      1. 选择 Select an existing security group

      2. 在安全组列表中,选择 default。此操作可为您的 VPC 选择默认安全组。默认情况下,安全组在 TPC 端口 22 上接受入站安全外壳 (SSH)。如果您的 VPC 不是这种情况,则添加此规则;有关更多信息,请参阅Amazon VPC 用户指南中的什么是 Amazon VPC?

      3. 选择 Next: Review and Launch

    7. 检查信息,然后选择 Launch (启动)

  3. Select an existing key pair or create a new key pair 窗口中,执行下列操作之一:

    • 如果您没有 Amazon EC2 密钥对,请选择 Create a new key pair (创建新的密钥对),然后按照说明操作。系统会要求您下载私有密钥文件(.pem 文件)。稍后在登录 Amazon EC2 实例时,您将需要此文件。

    • 如果您已经有 Amazon EC2 密钥对,请转到 Select a key pair (选择密钥对),从列表中选择您的密钥对。您必须有可用的私有密钥文件(.pem 文件)才能登录 Amazon EC2 实例。

  4. 在配置密钥对后,选择 Launch Instances (启动实例)

    在控制台导航窗格中,选择 EC2 Dashboard (EC2 控制面板),然后选择您启动的实例。在下方窗格中的 Description (描述) 选项卡上,找到实例的 Public DNS (公有 DNS) 位置,例如:ec2-11-22-33-44.us-west-2.compute.amazonaws.com

    您的 Amazon EC2 实例需要几分钟才能变为可用。

  5. 使用 ssh 命令登录您的 Amazon EC2 实例,如以下示例所示。

    chmod 400 my-keypair.pem ssh -i my-keypair.pem ec2-user@public-dns-name

    指定私有密钥文件(.pem 文件)和 EC2 实例的公有 DNS 名称。登录 ID 为 ec2-user。不需要密码。

    有关连接到 EC 实例的更多详细信息,请参阅Amazon EC2 用户指南(适用于 Linux 实例)中的使用 SSH 连接到 Linux 实例

步骤 2:安装和配置 MongoDB Community Edition

步骤 1:启动 Amazon EC2 实例中启动的 Amazon EC2 实例上执行这些步骤。

在 EC2 实例上安装和配置 MongoDB Community Edition

  1. 转到 MongoDB 文档中的在 Amazon Linux 上安装 MongoDB Community Edition,并按照其中的说明操作。

  2. 默认情况下,MongoDB 服务器 (mongod) 仅允许来自 IP 地址 127.0.0.1 (localhost) 的回环连接。要允许来自 Amazon VPC 中其他位置的连接,请执行以下操作:

    1. 编辑 /etc/mongod.conf 文件并查找以下行。

      # network interfaces net: port: 27017 bindIp: 127.0.0.1 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
    2. 修改 bindIp 行,使之如下所示。

      bindIp: public-dns-name
    3. public-dns-name 替换为实例的实际公有 DNS 名称,例如 ec2-11-22-33-44.us-west-2.compute.amazonaws.com

    4. 保存 /etc/mongod.conf 文件,然后重新启动 mongod

      sudo service mongod restart
  3. 通过执行以下操作在您的 MongoDB 实例中填充数据:

    1. 使用 wget 命令下载包含示例数据的 JSON 文件。

      wget http://media.mongodb.org/zips.json
    2. 使用 mongoimport 命令将数据导入新数据库 (zips-db)。

      mongoimport --host public-dns-name:27017 --db zips-db --file zips.json
    3. 导入完成后,请使用 mongo shell 连接到 MongoDB 并验证数据已成功加载。

      mongo --host public-dns-name:27017
    4. public-dns-name 替换为实例的实际公有 DNS 名称。

    5. mongo shell 提示符处,输入以下命令。

      use zips-db db.zips.count() db.zips.aggregate( [ { $group: { _id: { state: "$state", city: "$city" }, pop: { $sum: "$pop" } } }, { $group: { _id: "$_id.state", avgCityPop: { $avg: "$pop" } } } ] )

      输出应显示以下内容:

      • 数据库名称 (zips-db)

      • zips 集合 (29353) 中的文档数量

      • 每个州的城市平均人口

    6. 通过使用以下命令,从 mongo shell 退出并返回到命令提示符。

      exit

步骤 3:创建 AWS DMS 复制实例

要在 AWS DMS 中执行复制,您需要一个复制实例。

创建 AWS DMS 复制实例

  1. 打开 AWS DMS 控制台 (https://console.aws.amazon.com/dms/)。

  2. 在导航窗格中,选择复制实例

  3. 选择 Create replication instance (创建复制实例),并输入以下信息:

    • 对于 Name (名称),请输入 mongodb2docdb

    • 对于 Description (描述),请输入 MongoDB to Amazon DocumentDB replication instance

    • 对于 Instance class (实例类),请保留默认值。

    • 对于 Engine version (引擎版本),请保留默认值。

    • 对于 VPC,请选择您的默认 VPC。

    • 对于 Multi-AZ (多可用区),请选择 No (否)

    • 对于 Publicly accessible (公开访问),请启用此选项。

    根据需要进行设置后,选择 Create replication instance (创建复制实例)

注意

您可以在复制实例的状态变为可用时开始使用它。这个过程可能需要几分钟。

步骤 4:创建源和目标终端节点

源终端节点是在您的 Amazon EC2 实例上运行的 MongoDB 安装的终端节点。

创建源终端节点

  1. 打开 AWS DMS 控制台 (https://console.aws.amazon.com/dms/)。

  2. 在导航窗格中,选择 Endpoints

  3. 选择 Create endpoint (创建终端节点),然后输入以下信息:

    • 对于 Endpoint type (终端节点类型),请选择 Source (源)

    • 对于 Endpoint identifier (终端节点标识符),请输入容易记住的名称,例如 mongodb-source

    • 对于 Source engine (源引擎),请选择 mongodb

    • 对于 Server name (服务器名称),请输入 Amazon EC2 实例的公有 DNS 名称,例如 ec2-11-22-33-44.us-west-2.compute.amazonaws.com

    • 对于 Port (端口),请输入 27017

    • 对于 SSL mode (SSL 模式),请选择 none (无)

    • 对于 Authentication mode (身份验证模式),请选择 none (无)

    • 对于 Database name (数据库名称),请输入 zips-db

    • 对于 Authentication mechanism (身份验证机制),请选择 default (默认)

    • 对于 Metadata mode (元数据模式),请选择 document (文档)

    根据需要完成设置后,选择 Create endpoint (创建终端节点)

接下来,创建目标终端节点。此终端节点用于您的 Amazon DocumentDB 集群,该集群应已运行。有关启动 Amazon DocumentDB 集群的更多信息,请参阅 Amazon DocumentDB 开发人员指南 中的入门

重要

继续之前,请执行以下操作:

  • 为您的 Amazon DocumentDB 集群准备好主用户名和密码。

  • 为您的 Amazon DocumentDB 集群准备好 DNS 名称和端口号,以便 AWS DMS 可以连接到该集群。要确定此信息,请使用下面的 AWS CLI 命令,将 cluster-id 替换为您的 Amazon DocumentDB 集群的名称。

    aws docdb describe-db-clusters \ --db-cluster-identifier cluster-id \ --query "DBClusters[*].[Endpoint,Port]"
  • 下载 Amazon DocumentDB 可用来验证 SSL 连接的证书捆绑包。要执行此操作,请输入以下命令。

    wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem

创建目标终端节点

  1. 在导航窗格中,选择 Endpoints

  2. 选择 Create endpoint (创建终端节点),然后输入以下信息:

    • 对于 Endpoint type (终端节点类型),请选择 Target (目标)

    • 对于 Endpoint identifier (终端节点标识符),请输入容易记住的名称,例如 docdb-target

    • 对于 Target engine (目标引擎),请选择 docdb

    • 对于 Server name (服务器名称),请输入您的 Amazon DocumentDB 集群的 DNS 名称。

    • 对于 Port (端口),请输入您的 Amazon DocumentDB 集群的端口号。

    • 对于 SSL mode (SSL 模式),请选择 verify-full

    • 对于 CA certificate (CA 证书),请选择 Add new CA certificate (添加新的 CA 证书),然后对于 Certificate Identifier (证书标识符),请输入 rds-combined-ca-bundle。对于 Import file (导入文件),请导航到您下载的 rds-combined-ca-bundle.pem 文件。完成后,请选择 Add new CA certificate (添加新的 CA 证书)

    • 对于 User name (用户名),请输入 Amazon DocumentDB 集群的主用户名。

    • 对于 Password (密码),请输入您的 Amazon DocumentDB 集群的主密码。

    • 对于 Database name (数据库名称),请输入 zips-db

    根据需要完成设置后,选择 Create endpoint (创建终端节点)

现在,您已创建源和目标终端节点,请进行测试,以确保其正常工作。另外,为确保 AWS DMS 可以访问每个终端节点的数据库对象,请刷新终端节点的架构。

测试终端节点

  1. 在导航窗格中,选择 Endpoints

  2. 选择源终端节点 (mongodb-source),然后选择 Test connection (测试连接)

  3. 选择您的复制实例 (mongodb2docdb),然后选择 Run test (运行测试)。可能需要几分钟时间来完成测试并使 Status (状态) 变为 successful (成功)

    如果 Status (状态) 变为 failed (失败),请查看失败消息。更正可能存在的任何错误,然后再次测试终端节点。

注意

对目标终端节点 (docdb-target) 重复此过程。

刷新架构

  1. 在导航窗格中,选择 Endpoints

  2. 选择源终端节点 (mongodb-source),然后选择 Refresh schemas (刷新架构)

  3. 选择您的复制实例 (mongodb2docdb),然后选择 Refresh schemas (刷新架构)

注意

对目标终端节点 (docdb-target) 重复此过程。

步骤 5:创建并运行迁移任务

您现在可以启动 AWS DMS 迁移任务,将 zips 数据从 MongoDB 迁移到 Amazon DocumentDB。

  1. 打开 AWS DMS 控制台 (https://console.aws.amazon.com/dms/)。

  2. 在导航窗格中,选择任务

  3. 选择 Create task (创建任务),然后输入以下信息:

    • 对于 Task name (任务名称),请输入容易记住的名称,例如 my-dms-task

    • 对于 Replication instance (复制实例),请选择您在 步骤 3:创建 AWS DMS 复制实例 中创建的复制实例。

    • 对于 Source endpoint (源终端节点),请选择您在 步骤 4:创建源和目标终端节点 中创建的源终端节点。

    • 对于 Target endpoint (目标终端节点),请选择您在 步骤 4:创建源和目标终端节点 中创建的目标终端节点。

    • 对于 Migration type (迁移类型),请选择 Migrate existing data (迁移现有数据)

    • 对于 Start task on create (在创建时启动任务),请启用此选项。

    Task Settings (任务设置) 部分中,保留所有选项的默认值。

    Table mappings (表映射) 部分中,选择 Guided (引导式) 选项卡,然后输入以下信息:

    • 对于 Schema name is (架构名称为),请选择 Enter a schema (输入架构)

    • 对于 Schema name is like (架构名称类似于),请保留其默认值 (%)。

    • 对于 Table name is like (表名称类似于),请保留其默认值 (%)。

    选择 Add selection rule (添加选择规则) 以确认信息正确无误。

    根据需要进行设置后,选择 Create task (创建任务)

AWS DMS 现在开始将数据从 MongoDB 迁移到 Amazon DocumentDB。任务状态从 Starting (正在启动) 更改为 Running (正在运行)。您可以通过在 AWS DMS 控制台中选择 Tasks (任务) 来监控进度。几分钟后,状态将变为 Load complete (加载完成)

注意

迁移完成后,您可以使用 mongo shell 连接到您的 Amazon DocumentDB 集群并查看 zips 数据。有关更多信息,请参阅 Amazon DocumentDB 开发人员指南 中的使用 mongo Shell 访问 Amazon DocumentDB 集群