Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

setFeatureCompatibilityVersion

在此页面上

  • 定义
  • 兼容性
  • 语法
  • 行为
  • 示例
setFeatureCompatibilityVersion

启用或禁用将与早期版本 MongoDB 不兼容的数据持久化的功能。您只能对 admin 数据库发出 setFeatureCompatibilityVersion

警告

启用向后不兼容的功能可能会使降级过程变得复杂,因为在降级之前,您必须删除任何持续存在的向后不兼容的功能。

升级后,建议让部署在不启用向后不兼容功能的情况下稳定运行一段时间,以确保降级回老版本的可能性极小。当确信降级的可能性非常小时,请启用这些功能。

此命令可用于以下环境中托管的部署:

  • MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本

  • MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本

该命令采用以下形式:

db.adminCommand( {
setFeatureCompatibilityVersion: <version>,
writeConcern: { wtimeout: <timeout> }
} )

version的值为:

版本
说明

"5.0"

"4.4"

在 MongoDB 4.4 和 5.0 部署中可用

启用保留与MongoDB 4.2不兼容的数据的4.4功能。

"4.2"

在 MongoDB 4.4 部署中可用

禁用保留与MongoDB 4.2不兼容的数据的4.4功能。

Optional

writeConcern 以毫秒为单位指定写关注 wtimeout 值:

  • 主节点等待大多数副本集成员确认的时间段。如果在该时间段内未收到确认,则操作失败。

  • 默认值为 60000 毫秒。如果副本集的次要成员的延迟超过 wtimeout 默认值,则使用更长的时间段。

注意

  • 对于独立实例,请在独立 mongod 实例上运行该命令。

  • 对于副本集,请在主节点上运行命令。大多数承载数据的成员必须可用。

  • 对于分片集群,请在 mongos 实例上运行该命令。

某些后台操作可能会阻止 setFeatureCompatibilityVersion 的执行。使用 currentOp 确定任何正在进行的操作。

如果在初始同步过程中触发 setFeatureCompatibilityVersion 更改,在 oplog 应用阶段重放条目时,同步可能会失败,并显示 OplogOperationUnsupported 错误信息。此尝试之后的同步会成功,因为操作阶段不再重放该操作。

部署
featureCompatibilityVersion

新的 5.0 部署

"5.0"

对于从 4.4 升级的 5.0 部署

"4.4" 直到您setFeatureCompatibilityVersion"5.0"

此命令执行的必须是对内部系统集合的写入。如果由于任何原因该命令未能成功完成,您都可以安全地重试该命令,因为该操作是幂等的。

仲裁节点不会复制 admin.system.version 集合。因此,无论副本集的 fCV 值如何,仲裁节点始终具有等于二进制文件的降级版本的特征兼容性版本。

例如,MongoDB 5.0 集群中的仲裁节点的 fCV 值为 4.4。

要查看mongod实例的featureCompatibilityVersion ,请对mongod实例运行以下命令:

注意

该操作在mongos实例上未定义。 对于已启用访问控制的分片集群,要对分片副本集的成员运行命令,必须以分片本地用户身份连接到该成员。

db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )

此命令的输出将类似于以下内容之一,具体取决于mongod的当前状态:

  • 如果部署具有默认featureCompatibilityVersion ,或者已针对部署成功运行setFeatureCompatibilityVersion命令,则featureCompatibilityVersion的形式为:

    "featureCompatibilityVersion" : {
    "version" : <version>
    }
  • 如果mongod处于部分升级或降级状态,则featureCompatibilityVersion将采用以下形式:

    "featureCompatibilityVersion" : {
    "version" : <version> ,
    "targetVersion" : <target version>
    }

    例如,如果分片集群有一个分片副本集,而当您针对 运行setFeatureCompatibilityVersion mongos命令时,该副本集为只读,则该命令将失败,并且配置服务器的featureCompatibilityVersion 将包含targetVersion 字段。

    或者,如果在setFeatureCompatibilityVersion运行时副本集变为只读,则该命令将失败,并且副本集的featureCompatibilityVersion也将包含targetVersion字段。

要启用保留与 MongoDB 4.4 不兼容的数据的 5.0 功能,请在 MongoDB 5.0 部署上将功能兼容性设置为"5.0"

注意

admin 数据库运行 setFeatureCompatibilityVersion 命令。

  • 对于独立实例,请在独立 mongod 实例上运行该命令。

  • 对于副本集,请在主节点上运行命令。大多数承载数据的成员必须可用。

  • 对于分片集群,请在 mongos 实例上运行该命令。

db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )

要禁用保留与 MongoDB 4.4 不兼容的数据的 5.0 功能,请在 MongoDB 5.0 部署上将功能兼容性设置为 "4.4"

注意

admin 数据库运行 setFeatureCompatibilityVersion 命令。

  • 对于独立实例,请在独立 mongod 实例上运行该命令。

  • 对于副本集,请在主节点上运行命令。大多数承载数据的成员必须可用。

  • 对于分片集群,请在 mongos 实例上运行该命令。

  • "4.4" 仅 MongoDB 4.4 和 MongoDB 5.0 部署支持 featureCompatibilityVersion。

db.adminCommand( { setFeatureCompatibilityVersion: "4.4" } )

如果在从 MongoDB 5.0 降级到 MongoDB 4.4 的过程中运行,则还必须删除所有与 4.4 不兼容的保留功能。请参阅相应的降级程序。

以下示例将可选写关注 wtimeout 字段设置为 5000(5 秒)。

注意

admin 数据库运行 setFeatureCompatibilityVersion 命令。

  • 对于独立实例,请在独立 mongod 实例上运行该命令。

  • 对于副本集,请在主节点上运行命令。大多数承载数据的成员必须可用。

  • 对于分片集群,请在 mongos 实例上运行该命令。

db.adminCommand( {
setFeatureCompatibilityVersion: "5.0",
writeConcern: { wtimeout: 5000 }
} )

后退

setAuditConfig