You need to enable JavaScript to run this app.
导航
实例管理
最近更新时间:2025.06.09 17:53:25首次发布时间:2023.02.10 19:05:45
我的收藏
有用
有用
无用
无用

本文汇总了文档数据库 MongoDB 版实例管理的常见问题。

文档数据库 MongoDB 版和 MongoDB 有什么关系?

文档数据库 MongoDB 版是一款完全兼容 MongoDB 协议,且具备高可用、高性能的在线云数据库服务。它支持绝大部分的 MongoDB 命令操作,可以与任何兼容 MongoDB 的客户端建立连接进行数据存储或执行相应数据库操作。更多关于文档数据库 MongoDB 版的信息,请参见什么是文档数据库 MongoDB 版

文档数据库 MongoDB 版提供何种实例规格?

文档数据库 MongoDB 版提供了副本集和分片集群两种架构,每种架构的实例都支持多种规格配置,可灵活选择,满足您对不同性能、容量需求和应用场景的要求。更多详情,请参见产品规格

在同一账号的同一地域下,是否支持设置同名的实例?

支持。文档数据库 MongoDB 版使用实例 ID 作为实例的唯一标识符,每个实例在创建时都会随机生成一个唯一的实例 ID。实例名称支持选填,若不填,默认以实例 ID 作为当前实例的名称,您也可以根据需要自定义实例名称。更多详情,请参见创建实例

最多支持创建多少个文档数据库 MongoDB 版实例?

文档数据库 MongoDB 版支持批量创建实例,每次最多支持同时创建 10 个实例。具体操作步骤,请参见创建实例

说明

每个火山引擎主账号在每个地域下默认最多可购买 30 个 MongoDB 实例。若您需要调整配额购买更多实例,请前往配额中心提交配额申请

文档数据库 MongoDB 版是否支持添加或减少节点或分片?

文档数据库 MongoDB 版支持两种实例类型,不同类型的 MongoDB 实例支持的变配方案不同。更多关于 MongoDB 实例支持的变配方案详情,请参见变更实例配置

文档数据库 MongoDB 版支持哪些数据库版本?

文档数据库 MongoDB 版当前支持 MongoDB 4.0、4.2、4.4、5.0 和 6.0 版本。建议使用对应数据库版本的客户端来访问,您可以从 MongoDB Drivers 下载各语言的客户端。

如何查看 MongoDB 实例使用的数据库版本?

您可以通过如下步骤查看 MongoDB 实例使用的数据库版本。

  1. 通过 Mongo Shell 连接 MongoDB 实例。详情请参见通过 Mongo Shell 工具连接实例

  2. 执行以下命令查看数据库版本。

    db.version()
    

如何升级 MongoDB 实例的数据库版本,例如从 MongoDB 5.0 版本升级到 MongoDB 6.0 版本?

暂不支持直接 MongoDB 数据库版本(如从 MongoDB 5.0 版本升级至 MongoDB 6.0 版本)。但您可以创建一个新的高版本实例,用新高版本实例替换原低版本实例的方式实现。具体操作步骤如下:

  1. 创建一个新的高版本(如 MongoDB 6.0 版本)实例。实例创建方法,请参见创建实例
  2. 通过数据库传输工具 DTS 将原低版本(如 MongoDB 5.0 版本)实例迁移至新的高版本(如 MongoDB 6.0 版本)实例。具体操作步骤,请参见火山引擎版 MongoDB 迁移至火山引擎版 MongoDB

说明

关于 MongoDB 版本的更多详情,请参见版本介绍

如何将实例从副本集升级为分片集群?

暂不支持将实例从副本集直接升级为分片集群架构。但您可以创建一个新实例,用新实例替换旧实例的方式实现。具体操作步骤如下:

  1. 创建一个新的分片集群实例。实例创建方法,请参见创建实例
  2. 通过数据库传输工具 DTS 将副本集实例数据迁移至新的分片集群实例。具体操作步骤,请参见火山引擎版 MongoDB 迁移至火山引擎版 MongoDB

说明

关于 MongoDB 实例架构的更多详情,请参见产品架构

为什么在 MongoDB 控制台上看不见我刚创建成功的实例?

因为您新建实例所属的项目与您在控制台上选择进入的项目不是同一个。
MongoDB 控制台上查看实例时,需要先指定目标实例所属项目和所在地域。您可以在控制台右上角的项目和地域下拉列表中,分别选择实例所属的项目和地域。
项目和地域

说明

  • 您可以在创建实例时就指定实例所属的项目,具体操作步骤,请参见创建实例
  • 您也可以在实例创建成功后,改变实例的所属项目。具体操作步骤,请参见资源转入项目

为什么备份文件列表中展示的数据备份文件,比实际下载下来的备份文件更大?

MongoDB 的数据备份是以分片形式存储在对象存储 TOS 中的,在 MongoDB 控制台的备份文件列表中所展示的是未压缩的数据备份文件大小;而在您单击获取备份文件后,系统会将 TOS 中的备份文件先进行压缩再提供下载,下载后的文件大小是压缩后的文件大小。
因此,针对数据备份文件,您会看到控制台上展示的备份文件大小(未压缩)比您下载下来的数据备份文大小(已压缩)更大。示例如下:

  • 未压缩数据备份文件大小
    未压缩
  • 已压缩数据备份文件大小
    已压缩

关于如何获取和下载备份文件的操作步骤,请参见管理备份文件

修改了私有网络所属项目后,为何创建 MongoDB 实例时找不到该私有网络下的子网了?

创建私有网络时可指定项目,但创建子网时不支持指定项目,子网默认与与所属 VPC 在同一项目下。VPC 和子网的项目变更具有独立性,即修改 VPC 所属项目并不会同时修改当前 VPC 下子网的所属项目。更多详情,请参见私有网络项目管理
因此,若修改了 VPC 所属项目,您还需要将 VPC 下的子网项目也进行相应变更,保证两者所属项目的一致性,否则非全局权限子用户创建云资源(如文档数据库 MongoDB 版)时将无法选择子网或出现异常报错。修改所属项目的具体操作步骤,请参见项目资源管理

收到实例 oplog 保留窗过小的事件监控告警后该如何处理?

文档数据库 MongoDB 版的 oplog(operations log) 存储了数据库中所有对文档的改动操作,用于节点间的主从复制。文档数据库 MongoDB 版默认的 oplog 大小(即 replication.oplogSizeMB 参数值) 为实例最大可用存储空间的 10 %(例如,实例的最大可用存储空间为 20GiB,那么相应的 oplog 大小即为 2GiB),且 oplog 大小会随着磁盘扩容而自动调整。
oplog 保留窗(也称为 oplog 可用时间)即 oplog 记录表中最老的一条 oplog 和最新的一条 oplog 间的时间差。主从复制需要依赖这个 oplog 窗口,只有在同步源的 oplog 窗口找到期望的 oplog 记录时,从节点才能正常进行同步。如果 oplog 可用时间过短,那么能保留的 oplog 记录则有限,在主从复制时延增大、从库重建等场景下,因缺失所需 oplog 导致主从复制失败的风险则会增加,进而影响实例可用性和数据可靠性。
因此,当实例的 oplog 可用时间不足时,您就会收到 oplog 保留窗过小的事件监控告警消息。收到该事件监控告警后,您需要对实例的 replication.oplogSizeMB 参数值作适当调整,您可以参考如下计算公式估算replication.oplogSizeMB 参数的建议值:

  • 计算公式

    说明

    replication.oplogSizeMB 建议值 = replication.oplogSizeMB 当前值 × 推荐调整系数
    您可以根据如下信息估算出推荐调整系数
    = 推荐的 oplog 可用时间 ➗ 实际的 oplog 可用时间
    =(实例当前数据量 ➗ 主从复制常见的同步速率)➗ 实际的 oplog 可用时间。
    上述计算公式中各计算项的说明如下表所示。

    计算项说明

    实例当前数据量

    您可以通过副本集实例上主节点的数据磁盘使用量,或分片集群实例中各 Shard 主节点的数据磁盘使用量之和估算实例当前的数据量。
    您可以在 MongoDB 控制台上查看实例的数据磁盘使用量监控指标。查看方法,请参见查看监控数据

    主从复制常见的同步速率主从复制的同步速率表示的是主从节点每小时可以同步的数据量。通常情况下,主从复制时的数据同步速率约为 50GiB/小时。
    oplog 可用时间您可以在 MongoDB 控制台上查看实例的 Oplog 可用时间监控指标。查看方法,请参见查看监控数据
  • 计算示例
    假设存在一个 MongoDB 副本集实例,实例相关信息如下:

    • 实例当前数据量: 500GiB。
    • 实际的 oplog 可用时间:4 小时。
    • replication.oplogSizeMB 参数当前值:采用动态取值方式,且实例的最大可用存储空间为 1000GiB,replication.oplogSizeMB 参数的当前值即为 1000GiB × 10% = 100GiB。

    那么,当该实例收到 oplog 保留窗过小的事件监控告警后,可大致估算出推荐的调整系数为:500GiB ➗ 50GiB/小时 ➗ 4 小时 = 2.5。
    因此,replication.oplogSizeMB 建议值为:2.5 × 100GiB = 250GiB,即建议您将 replication.oplogSizeMB 参数值调整为 250GiB。

为什么增加 Shard 分片时,实例会出现性能抖动(如业务访问延迟增加)?

当您通过扩容操作为实例增加 Shard 分片后,出于数据自动均衡的需要,MongoDB Balancer 会立刻启动搬迁流程。在搬迁完成后,原分片上的数据将会被删除。需要注意的是,MongoDB 在默认设置下,并未对数据迁移的数据量以及间隔时间加以限制。所以,从开启分片直至数据完全实现均衡的这一时间段内,如果您的 MongoDB 实例中已存在大量数据,primary shard 极有可能出现负载增加的情况。在这种情形下,时延敏感业务很可能会有明显感知,例如出现 CPU 使用率异常攀升、业务访问延迟加剧、页面响应速度变慢等状况。
若在为 MongoDB 实例增加 Shard 分片过程中出现上述问题,您可尝试通过以下 4 个参数来限制实例的数据迁移与清理速度。

说明

  • 通过调整下述参数,可在短期内减轻因负载均衡引起的性能抖动问题。然而,这也将导致新分片完成数据均衡的时间显著延长,需结合业务实际场景进行综合权衡。
  • 强烈建议您密切留意 MongoDB 实例的表数据量,并提前为实例启用分片功能。同时,为防止对线上业务造成影响,建议在业务低谷时段执行扩容分片操作。关于分片集群使用的更多建议,请参见 MongoDB 分片集群使用指南
参数名称说明参数设置示例

migrateCloneInsertionBatchDelayMS

该参数可用于指定迁移过程中,每个插入批次的间隔时间。单位:毫秒。默认值:0。
参数设置建议:

  • 若 MongoDB 实例负载较低,网络带宽较高,且希望加快迁移速度,可以适当缩短间隔时间(例如设置为 10~50 毫秒),来减少批次之间的等待时间,提高迁移速率。

  • 若 MongoDB 实例资源(如 CPU、内存)有限或网络带宽不稳定,可以适当增大将时间(例如设置为 100~500 毫秒),来避免因过快的插入请求导致系统资源耗尽或者网络拥塞。

您可以通过如下命令将迁移的间隔时间设置为 100 毫秒。

db.adminCommand({setParameter:1,migrateCloneInsertionBatchDelayMS:100})

migrateCloneInsertionBatchSize

该参数可用于指定迁移过程中,每个插入批次的文档数量。默认值:0。
参数设置建议:

  • 若需要迁移的文档较小,且 MongoDB 实例资源充足,可以适当增加每次迁移的文档数量(例如设置为 1000~5000),来提高迁移速率。

  • 若需要迁移的文档较大或者 MongoDB 实例资源有限,应适当减小每次迁移的文档数量(例如设置为 100~500),来避免单个批次占用过多的内存或导致长时间的磁盘写入操作。

您可以通过如下命令将每次迁移的文档数量设置为 500。

db.adminCommand({setParameter:1,migrateCloneInsertionBatchSize:500})

rangeDeleterBatchDelayMS

在范围迁移的清理阶段,每个删除批次的间隔时间。单位:毫秒。
参数设置建议:

  • 若 MongoDB 实例负载较低且希望快速完成删除操作,可以适当降低间隔时间(例如设置为 10~50 毫秒)。

  • 若 MongoDB 实例资源有限,为避免产生过大的瞬时负载,特别是在生产环境中与其他关键操作同时进行时,可以适当增加间隔时间(例如设置为 100~500 毫秒)。

您可以通过如下命令将删除的间隔时间设置为 100 毫秒。

db.adminCommand( { setParameter: 1, rangeDeleterBatchDelayMS: 100 } )

rangeDeleterBatchSize

该参数指定了在范围迁移的清理阶段,每次批量删除的最大文档数。
参数设置建议:

  • 若需要处理的数据量较大,且 MongoDB 实例资源充足,可以适当增加每次删除的文档数量(例如设置为 1000~2000),来提高删除效率。

  • 若 MongoDB 实例资源有限,可以适当减少每次删除的文档数量(例如设置为 100~500),避免对系统造成过大的负载。

您可以通过如下命令将每次清理删除的文档数量设置为 50。

db.adminCommand( { setParameter: 1, rangeDeleterBatchSize: 50 } )