发布于: Nov 30, 2022

【概要】本文将探讨如何利用在线数据迁移技术,将数据迁移至 Amazon DocumentDB 中。

本文将探讨如何利用在线数据迁移技术,将数据迁移至 Amazon DocumentDB 中。首先,我们先了解一下 Amazon DocumentDB,Amazon DocumentDB(兼容 MongoDB)是一项快速、可扩展且可用性高的全托管文档数据库服务,能够全面支持 MongoDB 工作负载。您可以在 Amazon DocumentDB 之上直接使用与 MongoDB 3.6 完全相同的应用程序代码、驱动程序及工具,借此运行、管理并调整工作负载规模,而不必分神于底层基础设施的运营工作。作为一套文档数据库,Amazon DocumentDB 让 JSON 数据的存储、查询以及索引变得更加简便易行。

从 MongoDB 迁移至 Amazon DocumentDB,主要有三种方案可供选择:离线、在线与混合。

在本文中,我们将探讨如何利用在线方法将托管在本地设施或 EC2 实例中的自我管理 MongoDB 集群迁移至 Amazon DocumentDB。在线方法能够最大程度减少停机时间,确保 DMS 得以持续从源 MongoDB 操作日志中读取 oplog,由此产生的一切变更也将以近实时方式被应用于源 Amazon DocumentDB 集群。

如果您希望尽量缩短停机时间,而且源数据集相对较小(不超过 1TB),那么在线方法绝对是最佳选项。但如果您的数据集大于 1TB,则应考虑选择混合或离线方案,充分发挥由 mongorestore 带来的并行化与速度优势。

关于离线迁移方法的更多细节信息,本文将向大家介绍如何通过在线方法将数据从托管在 Amazon EC2 实例上的 MongoDB 副本集,迁移至 Amazon DocumentDB 集群当中。

 

在着手迁移之前,请首先完成以下准备工作:

  1. 验证您的源版本与配置
  2. 设置并选定 Amazon DocumentDB 集群的大小
  3. 设置一个 EC2 实例
 

验证您的源版本与配置

如果您的 MongoDB 源使用的 MongoDB 版本低于 3.6,则应首先升级源部署版本及应用驱动程序。只有将版本升级至 MongoDB 3.6 或更高,才能实现面向 Amazon DocumentDB 的正常迁移。您可以在 mongo shell 当中输入以下代码以确定源部署的当前版本:

mongoToDocumentDBOnlineSet1:PRIMARY> db.version()
3.4.4

另外,请验证源 MongoDB 集群(或实例)是否已经被配置为副本集。您可以使用以下代码以确定 MongoDB 集群是否被配置为副本集:

db.adminCommand( { replSetGetStatus : 1 } )

如果输出结果为类似于 “”errmsg” : “not running with –replSet”” 的错误消息,则代表该集群尚未被配置为副本集。

 

设置并调整您的源 Amazon DocumentDB 集群大小

在本文的示例中,目标 Amazon DocumentDB 集群已经被设置为副本集,并运行在单一 db.r5.large 实例之上。当您对该集群进行大小调整时,可选择适合自身生产集群需求的实例类型。

 

设置 EC2 实例

要连接到 Amazon DocumentDB 集群以迁移索引,并在迁移过程中执行其他任务,您需要在集群所处的同一 VPC 当中创建 EC2 实例,而后安装 mongo shell。关于具体操作方法,请参阅 Amazon DocumentDB 入门教程。要验证与 Amazon DocumentDB 的连接是否正常,请输入以下 CLI 命令:

[ec2]$ mongo --ssl --host docdb-cluster-endpoint \
--sslCAFile rds-ca-2019-root.pem --username myuser \
--password mypassword
…
rs0:PRIMARY> db.runCommand('ping')

{ "ok" : 1 }

如果大家在接入源实例或者 Amazon DocumentDB 集群时遇到问题,请检查二者的安全组配置,以确保 EC2 实例有权限在正确的端口 (默认为 27017) 上连接到它们。关于故障排查的更多细节信息,请参阅对 Amazon DocumentDB 进行故障排查。

Amazon DocumentDB 使用传输层安全(TLS)加密。要经由 TLS 加密集合建立连接,您需要下载证书颁发机构(CA)文件以使用 mongo shell 进行连接,具体代码如下所示:

[ec2 ]$ curl -O https://s3.amazonaws.com/rds-downloads/rds-ca-2019-root.pem

您也可以禁用 TLS 协议。若需了解更多细节信息,请参阅加密传输数据。

 

相关文章