你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文可帮助你规划和执行从 MongoDB 到 Azure DocumentDB 的迁移。 它介绍了可用的迁移工具、迁移的关键阶段,以及降低风险和最小化停机时间的最佳做法。
无论是从本地 MongoDB 服务器、云托管的 VM 还是托管的 MongoDB 服务进行迁移,本文中的迁移选项、指南和最佳做法都适用。
关键迁移阶段
成功的迁移遵循这些不同的阶段。 每个阶段都有特定的目标和成功标准。
1. 评估
使用 Azure DocumentDB 迁移扩展自动扫描源 MongoDB,以识别不支持的功能、命令、查询语法和索引类型。 评估还提供了 MongoDB 版本、许可证、实例类型和数据库和集合指标的概述。 使用这些发现来规划架构更改,并在迁移之前识别任何所需的重构。
小窍门
建议详细查看 支持的 MongoDB 查询语言(MQL)功能和语法 ,并在实际迁移之前执行概念证明。
2. 准备
分析评估报告并测量源 TPS (每秒事务数)。 对代表性数据运行试用迁移,以建立目标计算层、存储层和分片计数。 执行性能测试,以确保目标配置满足你的要求。
3. 优化
使用与生产查询模式匹配的相应分片键和索引准备目标集合。 如果使用多个分片,请决定如何在分片之间分配集合,以平衡负载并最大程度地减少跨分片操作。
4. 迁移
运行迁移作业以脱机或联机模式移动数据:
- 脱机迁移:在启动时拍摄源的快照,并将其批量复制到目标。 快照之后,在源上添加、更新或删除的任何数据不会被复制。 所需的停机时间取决于大容量复制需要多长时间。
- 联机迁移:执行与脱机相同的大容量复制,同时在整个过程中监视更改流。 迁移期间所做的更改将复制到目标,因此所需的应用程序停机时间最少。 要求在源端具有变更流和足够大的操作日志。
小窍门
对于联机迁移,请确保启用更改流,并在源 MongoDB 上适当调整 oplog 大小,以便在迁移时段内捕获所有更改。
有关可用工具,请参阅 迁移工具。
5. 验证
验证是否已复制所有数据,包括最新更新。 比较文档计数、运行基于示例的验证,并验证索引和数据结构是否符合目标的预期。 使用自动化脚本使验证可重复且一致。
6. 直接转换
将读取流量移动到目标,并验证没有功能或性能问题。 读取验证成功后,将写入流量移到目标。 在割接窗口期间,密切监视是否存在任何异常。
迁移工具
本文中讨论的工具有助于从以下源迁移 MongoDB 工作负载:
- MongoDB 虚拟机
- MongoDB Atlas
- AWS DocumentDB
Azure DocumentDB 迁移扩展
使用 Visual Studio Code 和 Azure DocumentDB 迁移扩展(公共预览版) 创建和管理迁移作业—一种专为简便性、安全性和零停机时间而设计的解决方案。
此工具提供了明确的分步指南,可帮助你迁移工作负载,而不会造成服务中断。 您可以:
- 选择要迁移的特定数据库和集合
- 在熟悉的 VS Code 接口中执行所有步骤
- 在整个过程中确保安全连接
- 享受使用扩展的零成本
借助 Azure DocumentDB 迁移扩展,可以简化迁移过程,同时保持控制和安全性 , 所有这些都没有额外的基础结构或复杂性。
Web 应用实用工具 (联机)
使用 MongoMigrationwebBasedUtility 简化迁移至 Azure DocumentDB,此工具旨在提高效率、可靠性和易用性。 存储库提供了有关迁移工作负荷的详细分步说明。 此工具为联机和脱机数据迁移提供无缝体验。 此过程是用户友好的,只需提供源和目标详细信息。 它使你能够毫不费力地迁移 MongoDB 集合,同时保持控制、安全性和可伸缩性,从而解锁 Azure DocumentDB 的全部潜力。
主要功能包括:
- 支持虚拟网络中的专用部署以提高安全性
- 出现连接断开或暂时性错误时的自动恢复功能
- 用户友好界面
- 在 GitHub 上访问 C# 源代码
该工具支持灵活的部署选项,无需依赖于其他Azure资源即可独立运行。 此外,它还提供具有可自定义Azure Web 应用定价计划的可扩展性能。
本机 MongoDB 工具(脱机)
还可以使用本机 MongoDB 工具(例如 mongodump/mongorestore、mongoexport/mongoimport 将数据集脱机(无需复制实时更改)迁移到 Azure DocumentDB 产品/服务。
| Scenario | MongoDB 本机工具 |
|---|---|
| 移动数据库数据的子集(基于 JSON/CSV) | mongoexport/mongoimport |
| 移动整个数据库(基于 BSON) | mongodump/mongorestore |
-
mongoexport/mongoimport 是迁移 MongoDB 数据库子集的最佳迁移工具组合。
- mongoexport 将现有的数据导出为可读的 JSON 或 CSV 文件。 mongoexport 通过一个参数来指定要导出的现有数据的子集。
- mongoimport打开 JSON 或 CSV 文件,并将内容插入目标数据库实例(在本例中 Azure为 DocumentDB)。
- JSON 和 CSV 不是压缩格式;当 mongoimport将数据发送到 Azure DocumentDB 时,可能会产生过多的网络费用。
-
mongodump/mongorestore 是迁移整个 MongoDB 数据库的最佳迁移工具组合。 压缩的 BSON 格式可以更高效地使用网络资源,因为数据插入到 Azure DocumentDB 中。
- mongodump 会将现有数据导出为 BSON 文件。
- mongorestore 会将 BSON 文件转储导入 Azure DocumentDB。
注释
MongoDB 本机工具只能以主机硬件允许的速度移动数据。
迁移最佳做法
使用这些最佳做法可以降低风险、更准确地估计容量、提高迁移速度并安全地执行直接转换。
减少故障
在连接字符串中使用 URL 编码的密码。 特殊字符(例如
@,#,和:),在未编码时会导致解析中断。 URL 编码有助于在评估和迁移运行期间避免连接失败。在迁移之前执行预迁移评估。 评估可帮助你提前识别不受支持的功能、兼容性差距和潜在阻止程序。 解决迁移前发现的问题,以减少切换期间的返工。
在生产之前练习迁移和切换。 在非生产环境中进行一次或多次演练迁移。 实践可提高时间安排的准确性、团队准备和生产切换期间的信心。
精确确定基础设施规模
在小型但具有代表性的数据集上运行试用迁移。 使用试用版捕获实际吞吐量、延迟和资源消耗。 与综合测试数据相比,代表性示例提供更好的估计值。
推断试用结果以估计计算层、存储层和分片数。 使用观察到的测试指标,根据数据集的总体量预测最终规模需求。 如果生产数据分布与示例不同,请重新评估估算值。
使用接近生产环境的设置来确定代表性文档的数量、大小和结构。 在试用期间匹配生产索引和分片设置,以避免低估成本或迁移持续时间。 非生产设置可能会产生误导性的结果。
从试用结果估算目标存储,而不是假设源大小和目标大小相等。 由于索引定义和数据布局的差异,源和目标存储占用空间可能会有所不同。 使用试用结果通过安全缓冲区规划存储。
优化迁移速度
尽可能在同一区域中迁移。 在同一区域中保留源和目标可降低网络延迟并提高数据传输性能。 它还可以减少跨区域数据传输成本。
在迁移期间扩展,然后在切换后缩减。 例如,可以暂时将目标群集扩展到 M200,以提高迁移吞吐量。 迁移后,请缩减到受支持范围内的适当层级,以便稳定运行负载。
选择具有更高 IOPS 的磁盘以加快写入速度。 更高的 IOPS 可以显著提高写入密集型迁移性能。 由于磁盘大小通常以后无法缩减,因此在规划期间仔细选择磁盘大小。
仔细规划直接转换,因为没有回滚
规划低流量时段的停机时间。 停机时间取决于迁移完成后验证过程所需的时间。 低流量窗口可降低业务影响。
在切换之前,停止所有对源的写入操作。 此步骤可防止源和目标之间的最后一分钟分歧。 在完成切换之前,确认写入活动已完全暂停。
在移动写入之前验证迁移数据。 比较文档计数,然后运行随机示例文档比较(例如基于哈希的检查)。 尽可能使用脚本使验证可重复。
更新应用程序连接字符串并测试目标。 在启用生产写入之前,针对目标读操作和测试流量进行功能和性能测试验证。 确认关键路径的行为与预期相同。
仅在验证成功后移动写入流量。 仅在测试结果成功且一致后,才将生产写入切换到目标。 如果应用程序体系结构支持,可以使用分阶段推出。
协调各团队的努力,实现无缝迁移
确保来自应用、数据、基础设施、安全、网络和管理团队等所有利益相关者的支持和认同。 尽早协调期望和责任。 共享所有权减少了执行期间的误解和延迟。
使用规划和试运行来增强团队信心和优化流程。 没有顺利迁移的快捷方式。 试运行可以在低风险环境中发现问题,并为团队提供实践机会。
将直接转换视为关键且需及时处理。 切换需要精确的协调和清晰的沟通。 在事情开始之前指定决策者并建立升级路径。
了解谁将执行每个步骤、何时发生,以及如何最大程度地减少停机时间。 分配职责,建立时间线,并就成功标准达成一致。 记录直接转换 runbook 并将其与所有参与者共享。
当切换需要同时更新多个工作负载时,请与所有相关方协调。 在适用于所有团队的维护时段内安排直接转换。 避免周五晚上或主要商业活动附近的时段。
不要急于或跳过尽职调查的步骤,因为无法撤回。 彻底验证和仔细执行可防止成本高昂的错误。 接受切换需要时间,因为专注于速度的捷径会带来风险。
相关内容
- 使用 native MongoDB 工具将数据迁移到 Azure DocumentDB。
- 使用 MongoMigrationwebBasedUtility 将数据迁移到 Azure DocumentDB。