setFeatureCompatibilityVersion
定义
setFeatureCompatibilityVersion
启用或禁用将与早期版本 MongoDB 不兼容的数据持久化的功能。您只能对
admin
数据库发出setFeatureCompatibilityVersion
。
警告
启用向后不兼容的功能可能会使降级过程变得复杂,因为在降级之前,您必须删除任何持续存在的向后不兼容的功能。
升级后,建议让部署在不启用向后不兼容功能的情况下稳定运行一段时间,以确保降级回老版本的可能性极小。当确信降级的可能性非常小时,请启用这些功能。
兼容性
此命令可用于以下环境中托管的部署:
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
该命令采用以下形式:
db.adminCommand( { setFeatureCompatibilityVersion: <version>, writeConcern: { wtimeout: <timeout> } } )
version
的值为:
版本 | 说明 |
---|---|
"5.0" | 可用于 MongoDB 5.0 部署 |
"4.4" | 在 MongoDB 4.4 和 5.0 部署中可用 启用保留与MongoDB 4.2不兼容的数据的4.4功能。 |
"4.2" | 在 MongoDB 4.4 部署中可用 禁用保留与MongoDB 4.2不兼容的数据的4.4功能。 |
writeConcern
Optional
writeConcern
以毫秒为单位指定写关注 wtimeout
值:
行为
与后台操作冲突
某些后台操作可能会阻止 setFeatureCompatibilityVersion
的执行。使用 currentOp
确定任何正在进行的操作。
同步失败
如果在初始同步过程中触发 setFeatureCompatibilityVersion
更改,在 oplog
应用阶段重放条目时,同步可能会失败,并显示 OplogOperationUnsupported
错误信息。此尝试之后的同步会成功,因为操作阶段不再重放该操作。
Default Values
部署 | featureCompatibilityVersion |
---|---|
新的 5.0 部署 | "5.0" |
对于从 4.4 升级的 5.0 部署 |
幂等
此命令执行的必须是对内部系统集合的写入。如果由于任何原因该命令未能成功完成,您都可以安全地重试该命令,因为该操作是幂等的。
仲裁节点中的功能兼容性
仲裁节点不会复制 admin.system.version
集合。因此,无论副本集的 fCV 值如何,仲裁节点始终具有等于二进制文件的降级版本的特征兼容性版本。
例如,MongoDB 5.0 集群中的仲裁节点的 fCV 值为 4.4。
示例
查看 FeatureCompatibilityVersion
要查看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 5.0 部署上设置功能兼容性版本
启用 5.0 向后不兼容的功能
要启用保留与 MongoDB 4.4 不兼容的数据的 5.0 功能,请在 MongoDB 5.0 部署上将功能兼容性设置为"5.0"
:
注意
对 admin
数据库运行 setFeatureCompatibilityVersion
命令。
db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
禁用 5.0 向后不兼容的功能
要禁用保留与 MongoDB 4.4 不兼容的数据的 5.0 功能,请在 MongoDB 5.0 部署上将功能兼容性设置为 "4.4"
:
注意
对 admin
数据库运行 setFeatureCompatibilityVersion
命令。
"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
命令。
db.adminCommand( { setFeatureCompatibilityVersion: "5.0", writeConcern: { wtimeout: 5000 } } )