文档数据库 MongoDB 版支持通过数据库传输服务 DTS 提供的多种数据迁移方案,来满足不同业务场景下 MongoDB 数据迁移的需求。本文介绍 DTS 支持的 MongoDB 数据迁移方案、基本原则以及迁移限速相关建议。
迁移工具介绍
火山引擎数据库传输服务 DTS(Database Transmission Service)提供了集数据迁移和数据同步于一体的数据库数据传输管理服务,支持关系型数据库、非关系型数据库间的数据传输,降低数据库之间数据流通复杂性,可在业务不停服的前提下轻松完成数据库迁移上云。关于 DTS 的更多信息,请参见什么是数据库传输服务。
迁移方案概览
迁移基本原则
- 正式迁移前,强烈建议先在模拟真实业务的测试场景下进行演练,来评估数据迁移对 MongoDB 性能(重点关注读写 I/O、主备复制延迟等)的影响。
- 强烈建议在业务低峰期进行数据迁移操作,避免或减少对线上业务的影响。
- 当文档数据库 MongoDB 版作为源库时,建议优先从 MongoDB 的从节点或只读节点读取数据,并在数据迁移过程中重点关注数据读取操作对业务的影响。
- 当文档数据库 MongoDB 版作为目标库时,在数据迁移过程中建议重点关注数据写入操作对 MongoDB 中主备延时监控指标,避免因从节点延迟过大,导致从节点进入异常状态无法恢复,进而影响实例整体可用性和数据可靠性。关于 MongoDB 主备延时监控指标的更多说明,请参见监控指标说明。
- 适当限制数据迁移工具的并发度、批次大小等,将数据读取操作影响控制在一个可接受的范围内,避免迁移影响业务。强烈建议先根据实例规格设置一个较低的迁移速率,再根据源库和目标库的读写压力逐步提高速率。更多说明,请参见迁移工具限速建议。
迁移工具限速建议
火山引擎数据库传输服务 DTS 提供了针对 MongoDB 数据迁移时全量迁移的速率配置参数,防止迁移速率过高时影响数据库性能,您可以根据源库和目标库的读写压力情况适当调整相关参数。具体参数说明如下表所示。
参数名称 | 参数说明 |
---|
迁移任务并发数 | 按需设置迁移任务的并发数。默认值 8,取值范围 8~64。 |
每秒迁移的行数 | 按需开启并设置每秒迁移的行数。默认值 100,000,取值范围 1~100,000。 |
每秒迁移的数据量 | 按需开启并设置每秒迁移的数据量。默认值 25,000,取值范围 1~25,000,单位:KB。 |
结合上述限速配置参数,MongoDB 提供了如下迁移限速建议供您参考。
数据库类型 | 迁移限速建议 |
---|
源库 | - 数据读取对于源库的影响相对可控,建议在迁移演练场景下,使用 DTS 的默认迁移任务并发数(即 8),并记录该并发度下数据迁移对源 MongoDB 实例的读写 I/O、CPU、内存等的影响。
- 在生产环境中正式进行数据迁移时,再结合源库的实例规格以及业务剩余性能资源,来酌情增减并发度。
例如,源 MongoDB 实例的规格较小,或源 MongoDB 资源使用率较高时先,可以先从 2 或 4 的并发度开始迁移。说明 若实例当前规格允许的迁移速度无法满足您的迁移要求,您可以尝试升级源 MongoDB 实例规格配置。实例变配的具体操作步骤,请参见副本集实例变配和变更分片集群实例配置。
|
目标库 | - 若目标 MongoDB 实例中未写入任何数据,且仅用于数据迁移,那么您可以根据 MongoDB 迁移性能参考的测试结果参考值,为 DTS 迁移任务配置合理的全量迁移速率参数,包括每秒迁移的行数和每秒迁移的数据量。
注意 - MongoDB 迁移性能参考中提供的迁移性能参考值,是在无其它任何业务负载的情况下测试得出的,您在实际业务中配置全量迁移速率参数时,需要综合业务当前的实际读写负载情况进行设置。
- 您可以根据实例的网络输入速率和网络输出速率监控指标值,来估算出业务当前读写负载的大致情况。关于网络输入速率和网络输出速率的更多详情,请参见监控指标说明。
- 建议先根据实例规格设置一个较低的迁移速率,再根据源库和目标库的读写压力逐步提高速率。具体操作步骤,请参见调整全量迁移速率。
- 建议在迁移过程中密切关注目标 MongoDB 实例中的主备延时监控指标,关于 MongoDB 主备延时监控指标的更多说明,请参见监控指标说明。
- 迁移过程很可能会在短时间内生产大量的 oplog,若您为目标 MongoDB 配置了 oplog 最短保留期(即
oplogMinRetentionHours )参数,建议您密切关注实例的磁盘空间使用率监控指标,避免在 oplog 生成速度较快时,oplog 占用过多磁盘空间导致实例性能下降的风险。更多详情,请参见 oplog 相关参数设置指南。
|
MongoDB 迁移性能参考
性能测试方法
本文在测试 MongoDB 迁移性能参考值时使用的测试方法详情,请参见测试环境、测试工具和测试命令。
性能测试结果
说明
- 本文中不同规格实例的测试结果,均为执行 3 次相同压测命令后得到的平均结果。
- 性能测试结果表中的衡量指标说明如下:
- 读速率:即客户端每秒从 MongoDB 中读取的数据量,单位:MB/s。
- 写速率:即客户端每秒从 MongoDB 中写入的数据量,单位:MB/s。
- 本文提供的迁移性能参考值是在无其它任何业务负载的情况下测试得出的,您在实际业务中配置全量迁移速率参数时,需要综合业务当前的实际读写负载情况进行设置。
- 您可以根据实例的网络输入速率和网络输出速率监控指标值,来估算出业务当前读写负载的大致情况。关于网络输入速率和网络输出速率的更多详情,请参见监控指标说明。
规格 | 测试结果参考值 |
---|
读速率(MB/s) | 写速率(MB/s) |
---|
1 核 2GiB | 10 | 4 |
2 核 4GiB | 25 | 6 |
4 核 8GiB | 50 | 10 |
4 核 16GiB | 55 | 10 |
4 核 32GiB | 55 | 10 |
8 核 16GiB | 60 | 15 |
8 核 32GiB | 60 | 15 |
8 核 64GiB | 60 | 15 |
16 核 32GiB | 65 | 18 |
16 核 64GiB | 65 | 18 |
16 核 128GiB | 65 | 18 |
32 核 64GiB | 65 | 18 |
32 核 128GiB | 85 | 18 |
32 核 256GiB | 85 | 18 |
说明
MongoDB 分片集群实例提供了多种 Mongos 的节点规格和数量,以及 Shard 分片的规格和数量组合,不同组合对数据迁移性能的影响可能存在差异。
为便于对比,本文在测试中各规格分片集群实例时,均使用了 3 个 Mongos 节点 和 2 个 Shard 分片,且每个实例使用的 Mongos 和 Shard 节点规格一致。例如,测试时使用的 Mongos 节点规格为 2 核 4GiB,那么该测试实例中 Shard 节点的规格也为 2 核 4GiB。
规格 | 测试结果参考值 |
---|
读速率(MB/s) | 写速率(MB/s) |
---|
1 核 2GiB | 10 x Shard 分片数 | 4 |
2 核 4GiB | 25 x Shard 分片数 | 6 |
4 核 8GiB | 50 x Shard 分片数 | 10 |
4 核 16GiB | 55 x Shard 分片数 | 15 |
4 核 32GiB | 60 x Shard 分片数 | 15 |
8 核 16GiB | 60 x Shard 分片数 | 30 |
8 核 32GiB | 60 x Shard 分片数 | 30 |
8 核 64GiB | 60 x Shard 分片数 | 30 |
16 核 32GiB | 65 x Shard 分片数 | 40 |
16 核 64GiB | 65 x Shard 分片数 | 40 |
16 核 128GiB | 65 x Shard 分片数 | 40 |
32 核 64GiB | 65 x Shard 分片数 | 40 |
32 核 128GiB | 85 x Shard 分片数 | 40 |
32 核 256GiB | 85 x Shard 分片数 | 40 |