发布于: Nov 30, 2022
【概要】在数据全部加载完成且 CDC 流程开始持续复制之后,您就可以变更应用程序中的数据库连接字符串以实际使用新的 Amazon DocumentDB 集群了
以下示意图为在线迁移流程中的五个具体步骤,具体包括:
- 应用程序持续向源内写入
- 使用 Amazon DocumentDB 索引工具进行索引转储
- 使用 Amazon DocumentDB 索引工具还原索引
- 使用 Amazon DMS 执行全数据加载与数据复制
- 将应用程序端点变更至 Amazon DocumentDB 集群
在利用在线方案向 Amazon DocumentDB 迁移时,您的应用程序将持续向源 MongoDB 数据库执行写入。第五步将具体探讨停止写入,并将应用程序指向变更至目标 Amazon DocumentDB 集群的方法。
在开始迁移之前,您需要在目标 Amazon DocumentDB 集群上创建与源 MongoDB 集群相同的索引。尽管 Amazon DMS 能够全面处理数据迁移,但索引的迁移仍然需要我们手动完成。要迁移这些索引,首先要求您创建新的 EC2 实例,而后使用 Amazon DocumentDB 索引工具将现有索引从 MongoDB 集群内导出。您可以直接从 Amazon DocumentDB 工具 GitHub repo 处克隆该工具,并按照 README.md 中的指示分步操作。
以下代码负责将源 MongoDB 集群中的索引转储至 EC2 实例上的指定目录(本文示例中的用户名与密码仅作演示用途,大家在实际操作中应注意保证密码强度):
python migrationtools/documentdb_index_tool.py --dump-indexes --dir ~/index.js/ --host ec2-user.us-west-2.compute.amazonaws.com --auth-db admin --username user --password password 2020-02-11 21:46:50,432: Successfully authenticated to database: admin 2020-02-11 21:46:50,432: Successfully connected to instance ec2-user.us-west-2.compute.amazonaws.com:27017 2020-02-11 21:46:50,432: Retrieving indexes from server... 2020-02-11 21:46:50,440: Completed writing index metadata to local folder: /home/ec2-user/index.js/
索引导出成功之后,下一步工作是在您的 Amazon DocumentDB 集群内还原这些索引。
要对上一步中导出至目标集群的索引进行还原,您需要使用 Amazon DocumentDB 索引工具。
以下代码可从 EC2 实例对 Amazon DocumentDB 集群进行索引还原:
python migrationtools/documentdb_index_tool.py --restore-indexes --dir ~/index.js/ --host docdb-2x2x-02-02-19-07-xx.cluster-xxxxxxxx.us-west-2.docdb.amazonaws.com:27017 --tls --tls-ca-file ~/rds-ca-2019-root.pem --username user --password password 2020-02-11 21:51:23,245: Successfully authenticated to database: admin 2020-02-11 21:51:23,245: Successfully connected to instance docdb-2x2x-02-02-19-07-xx.cluster-xxxxxxxx.us-west-2.docdb.amazonaws.com:27017 2020-02-11 21:51:23,264: zips-db.zips: added index: _id
为了确认索引还原是否正确,请使用 mongo shell 接入 Amazon DocumentDB 集群并列出指定的索引集合,具体代码如下所示:
mongo --ssl --host docdb-2020.cluster-xxxxxxxx.us-west-2.docdb.amazonaws.com:27017 --sslCAFile rds-ca-2019-root.pem --username documentdb --password documentdb db.zips.getIndexes()
Amazon DMS 是一项托管服务,用于帮助用户将数据库高效安全地迁移至 Amazon Web Services 服务。Amazon DMS 通过两种方式实现数据库迁移:全数据加载与变更数据捕获(CDC)。这一在线迁移方案利用 Amazon DMS 对全部数据进行复制,而后利用 CDC 将变更复制至 Amazon DocumentDB。若需了解更多 Amazon DMS 的使用方式信息,请参阅 Amazon Web Services 数据库迁移服务分步教程。
整个在线迁移流程分为以下几个步骤:
- 创建一个 Amazon DMS 复制实例。具体操作,请参阅 Amazon DMS 复制实例使用指南。 在数据迁移当中,本文使用 52.medium 实例类型。Amazon DMS 利用该复制实例运行数据迁移任务,将来自 MongoDB 源的数据迁移至 Amazon DocumentDB 目标集群。 此外,Amazon DMS 可在最长六个月周期内为特定迁移目标提供特定类型的免费复制实例。关于更多细节信息,请参阅 Amazon Web Services 数据库迁移服务:免费 DMS。
- 创建 MongoDB 源与 Amazon DocumentDB 目标终端节点。关于更多细节信息,请参阅 Amazon DMS 终端节点使用指南。 以下截图所示,为本文示例中 MongoDB 集群与目标 Amazon DocumentDB 集群的终端节点。
- 创建一项复制任务,用于将数据从源端点迁移至目标终端节点。
- 将任务类型选定为 “Full data load followed by ongoing data replication”(在数据复制完成后加载全部数据)。
- 在创建时启用 “Start task”(启动任务)选项。 在任务创建后,复制过程会立即开始。以下截图展示了数据库迁移任务的当前状态,可以看到任务已经完成全部加载,且当前正在执行持续复制。
如果您选定其中的 mongodbtodocumentbd-online-fullandongoing 任务,即可查看更多细节信息。在 “Table statistics”(表统计信息)部分可查看完整的数据负载统计信息,以及源与目标数据库之间的当前复制进度,具体请参阅以下截图。
要验证双方的文档数量是否匹配,您可在源数据库与目标数据库当中分别运行 db.collection.count() 命令。 您也可以通过 Amazon CloudWatch 指标查看迁移状态,并创建相应仪表板以显示迁移进度。以下截图所示为来自源数据库的 CDC 变更传入速率。
在数据全部加载完成且 CDC 流程开始持续复制之后,您就可以变更应用程序中的数据库连接字符串以实际使用新的 Amazon DocumentDB 集群了。关于更多细节信息,请参阅了解 Amazon DocumentDB 端点与 Amazon DocumentDB 最佳实践。