MongoDB数据库大版本升级说明

更新时间:2025-04-22 08:04:23

云数据库MongoDB支持升级数据库大版本。升级前,建议您了解不同产品架构、不同版本的实例支持升级到的数据库大版本以及不同数据库大版本的兼容性变更说明。

支持升级的数据库大版本

  • 云数据库 MongoDB 版控制台可以直接升级数据库大版本,但不同产品架构、不同版本的实例支持升级的版本不同,具体情况如下:

    产品架构

    规格类型

    实例的数据库大版本

    可升级到的数据库大版本

    产品架构

    规格类型

    实例的数据库大版本

    可升级到的数据库大版本

    单节点架构

    通用型云盘版

    MongoDB 4.0

    暂无更高的数据库大版本可升级。

    通用型云盘版

    MongoDB 3.4

    不支持升级数据库大版本。

    如果您需要升级数据库大版本,可以通过创建新实例,使用新实例替换旧实例。

    副本集架构

    独享型云盘版

    MongoDB 8.0

    暂无更高的数据库大版本可升级。

    MongoDB 7.0

    MongoDB 8.0

    MongoDB 6.0

    MongoDB 7.0

    MongoDB 5.0

    MongoDB 6.0

    MongoDB 4.4

    MongoDB 5.0

    实例从4.4升级到5.0后,由于默认的writeConcern{w:1}调整为{w:majority},可能会导致写入性能退化,写入延迟上升。请确认此变更带来的影响后,再进行大版本升级。

    • 通用型本地盘版

    • 独享型本地盘版

    • 独占物理机

    MongoDB 4.2

    不支持升级数据库大版本。

    如果您需要升级数据库大版本,可以通过创建新实例,使用新实例替换旧实例。

    MongoDB 4.0

    MongoDB 4.2

    MongoDB 3.4

    • MongoDB 4.0

    • MongoDB 4.2

    MongoDB 3.2

    MongoDB 3.0

    分片集群架构

    独享型云盘版

    MongoDB 8.0

    暂无更高的数据库大版本可升级。

    MongoDB 7.0

    MongoDB 8.0

    MongoDB 6.0

    MongoDB 7.0

    MongoDB 5.0

    MongoDB 6.0

    MongoDB 4.4

    MongoDB 5.0

    实例从4.4升级到5.0后,由于默认的writeConcern{w:1}调整为{w:majority},可能会导致写入性能退化,写入延迟上升。请确认此变更带来的影响后,再进行大版本升级。

    • 通用型本地盘版

    • 独享型本地盘版

    • 独占物理机

    MongoDB 4.2

    不支持升级数据库大版本。

    如果您需要升级数据库大版本,可以通过创建新实例,使用新实例替换旧实例。

    MongoDB 4.0

    MongoDB 4.2

    MongoDB 3.4

    • MongoDB 4.0

    • MongoDB 4.2

    MongoDB 3.2

    MongoDB 3.0

    Serverless架构

    MongoDB 4.2

    暂无更高的数据库大版本可升级。

  • 如果您需要跨产品架构或跨存储类型升级实例大版本,可以先创建目标高版本实例,然后通过DTS将源实例迁移至高版本的新实例中。

    迁移数据的方法如下:

大版本兼容性变更说明

不同数据库大版本的兼容性变更说明如下:

重要
  • 升级数据库大版本时,实例的状态需为运行中。如何升级数据库大版本,请参见升级数据库版本

  • 升级数据库大版本后不支持降级。

  • MongoDB 4.0及以上大版本已兼容MongoDB 3.6。如果您需要使用MongoDB 3.6大版本的功能,请升级到MongoDB 4.0及以上大版本。

  • 兼容性变更说明仅包含云数据库MongoDB内核的变更,不包含MongoDB实例管控功能的变更。

数据库大版本

兼容性变更说明

数据库大版本

兼容性变更说明

MongoDB 8.0

  • 不建议使用tcmallocAggressiveMemoryDecommit

  • tcmallocReleaseRate参数可以指定具体的内存释放速率,云数据库MongoDB版默认为10MB/s。

  • null作为查询条件时,MongoDB不会再匹配undefined值。

  • 不建议使用index filter。

  • 时间序列集合不建议使用timeField作为分片键。

  • 不建议使用cleanupOrphaned命令。

  • 不允许并发执行同一集合的compact命令。

  • 在升级MongoDB 8.0版本前,您需要重命名或删除名为system.buckets的非时间序列集合。

MongoDB 8.0的更多信息,请参见Compatibility Changes in MongoDB 8.0

MongoDB 7.0

  • 将大版本升级至MongoDB 7.0场景,目前不存在兼容性问题。

  • 如果需要将MongoDB 7.0版本降级至其他大版本,则需要先移除7.0版本支持的功能,例如:

    • 删除所有柱状索引(columnar indexes)。

    • 注销通过setClusterParameter命令设置的集群参数。具体信息,请参见setClusterParameter

    • 删除所有使用encryptedFields选项创建的集合。

    • 删除所有的复合通配符索引(Compound wildcard indexes)。

MongoDB 7.0的更多信息,请参见Compatibility Changes in MongoDB 7.0

MongoDB 6.0

  • 如果聚合管道里使用的内存超过了100 MB,默认会写入数据到磁盘的临时文件中。若要更改此默认行为,请修改全局参数allowDiskUseByDefaultfalse

    6.0之前的版本需要显式指定{ allowDiskUse: true }参数,才能写入数据到磁盘的临时文件中。

  • 通过dropIndexes删除索引时,如果使用通配符*,不会删除_id索引,也不会删除分片键索引,更多信息,请参见dropIndexes

  • 不再支持Mongo Shell工具,请使用mongosh工具替代。

  • 不再支持$explain$hint$max$maxTimeMS等操作符。

  • TTL索引expireAfterSeconds被设置为NaN时,会被认为设置为0,可能会立马淘汰过期文档。

  • 不再支持SCRAM-SHA-1认证方法。

  • 不再支持reIndex命令以及相对应的reIndex()方法。

MongoDB 6.0的更多信息,请参见Compatibility Changes in MongoDB 6.0

MongoDB 5.0

  • Secondary节点(从节点)的Read Concern级别从available变更为local,更多信息,请参见Read Concern

  • Write Concern的默认值由1变更为majority

    重要

    此调整可能会导致实例的写入性能退化,请确认影响之后再进行大版本升级操作。此外,您也可以使用setDefaultRWConcern命令修改数据库的默认writeConcern。

  • 不再支持db.collection.ensureIndex(),请使用db.collection.createIndex()替代。

  • saslStart以及saslContinue命令的参数进行严格校验,无法兼容mgosaslContinue只需要conversationIdpayload参数,而mgo提供了一个多余的参数 mechanism,更多信息,请参见mgo

  • 删除geoSearch

MongoDB 5.0的更多信息,请参见Compatibility Changes in MongoDB 5.0

MongoDB 4.4

  • compact不再支持force选项,更多信息,请参见compact

  • 不再支持geoSearch,更多信息,请参见geoSearch

  • 支持在主备数据库上同时创建索引,以减少索引创建带来的主备延迟。即使在索引创建过程中,也可以保证备库访问到最新的数据。

MongoDB 4.4的更多信息,请参见Compatibility Changes in MongoDB 4.4

MongoDB 4.2

  • 不再支持geoNear,请使用$geoNear (aggregation)替代,更多信息,请参见$geoNear (aggregation)

  • 不再支持repairDatabase

  • 不再支持并删除cloneCollection,请使用mongoexportmongoimport替代,更多信息,请参见mongoexportmongoimport

  • 不再支持afterClusterTime,更多信息,请参见afterClusterTime

  • 开源MongoDB 4.2+兼容驱动默认启用Retryable Writes,更多信息,请参见Retryable Writes

  • 删除groupcopydbclone

MongoDB 4.2的更多信息,请参见MongoDB 4.2兼容性更新说明

MongoDB 4.0

  • reIndex添加一个全局写锁,直到索引重建完成,更多信息,请参见reIndex

  • 不再支持copydbclone

MongoDB 4.0的更多信息,请参见MongoDB 4.0兼容性更新说明

MongoDB 3.6

  • aggregate不再支持返回单个文档,而是返回cursor。用户可以通过cursor指定batch的规格。aggregate的更多信息,请参见aggregate

  • $type: "array"能直接检测到数组类型的文档,之前只能检测到嵌套型的数组类型文档。$type的更多信息,请参见$type

  • 数组排序结果,发生以下变更:

    • find中新增可选项sort,用于提供排序结果明细。find的更多信息,请参见find

    • $sort(aggregation)$sort stage的内存限制为100 MB,更多信息,请参见$sort (aggregation)

  • 在进行更新操作时,如果需要同时更新多个字段,新字段将按照字典顺序添加,更多信息,请参见$set

  • 不再支持snapshot查询选项。

MongoDB 3.6的更多信息,请参见MongoDB 3.6兼容性更新说明

MongoDB 3.4

  • 不再支持group,请使用db.collection.aggregate()或者db.collection.mapReduce()替代。更多信息,请参见db.collection.aggregate()db.collection.mapReduce()

  • 使用$in表达式匹配+ upsert: trueupdate

    示例:

    db.c.drop()
    db.c.update({a:{$in:[1]}},{$addToSet:{a:2}},{upsert:true}) //在MongoDB 3.4插入会失败,MongoDB 3.4之前的大版本可成功插入一条记录。
    db.c.update({a:{$elemMatch:{$in:[2]}}},{$addToSet:{a:2}},{upsert:true}) //在MongoDB 3.4可成功插入一条记录。

    update的更多信息,请参见update

MongoDB 3.4的更多信息,请参见MongoDB 3.4兼容性变更说明

相关API

接口

说明

接口

说明

UpgradeDBInstanceEngineVersion

升级云数据库MongoDB实例的数据库大版本。

  • 本页导读 (1)
  • 支持升级的数据库大版本
  • 大版本兼容性变更说明
  • 相关API
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等