setFeatureCompatibilityVersion
在此页面上
定义
setFeatureCompatibilityVersion
启用或禁用将与早期版本 MongoDB 不兼容的数据持久化的功能。您只能对
admin
数据库发出setFeatureCompatibilityVersion
。
警告
启用向后不兼容的功能可能会使降级过程变得复杂,因为在降级之前,您必须删除任何持续存在的向后不兼容的功能。
升级后,建议让部署在不启用向后不兼容功能的情况下稳定运行一段时间,以确保降级回老版本的可能性极小。当确信降级的可能性非常小时,请启用这些功能。
兼容性
此命令可用于以下环境中托管的部署:
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
该命令具有以下语法:
db.adminCommand( { setFeatureCompatibilityVersion: <version>, writeConcern: { wtimeout: <timeout> } } )
命令字段
version
的可能值是:
版本 | 说明 |
---|---|
| 在 MongoDB 6.0 部署中可用 |
| 在 MongoDB 5.0 和 6.0 部署中可用 |
可选的writeConcern
指定写关注(write concern)wtimeout
值(以毫秒为单位):
行为
与后台操作冲突
某些后台操作可能会阻止 setFeatureCompatibilityVersion
的执行。使用 currentOp
确定任何正在进行的操作。
同步失败
如果在初始同步过程中触发 setFeatureCompatibilityVersion
更改,在 oplog
应用阶段重放条目时,同步可能会失败,并显示 OplogOperationUnsupported
错误信息。此尝试之后的同步会成功,因为操作阶段不再重放该操作。
Default Values
部署 | featureCompatibilityVersion |
---|---|
对于新的 6.0 部署 |
|
对于从 5.0 升级的 6.0 部署 |
|
新的 5.0 部署 |
|
对于从 4.4 升级的 5.0 部署 |
|
幂等
此命令执行的必须是对内部系统集合的写入。如果由于任何原因该命令未能成功完成,您都可以安全地重试该命令,因为该操作是幂等的。
Cluster-to-Cluster Sync 和用户写入阻塞
从 MongoDB 6.0 开始,如果需要降级特征兼容性版本,请确保禁用集群到集群复制和用户写入阻止。
如果您启用了集群到集群复制,请将其禁用。
如果启用了用户写入阻止,请将其禁用:
db.runCommand( { setUserWriteBlockMode: 1, global: false } ) 等待上一条命令完成。
使用
setFeatureCompatibilityVersion
降级特征兼容性版本。
有关 MongoDB Cluster-to-Cluster Sync 的更多信息,请参阅文档。
仲裁节点中的功能兼容性
仲裁节点不会复制admin.system.version
集合。因此,无论副本集的FCV值如何,仲裁节点始终具有等于二进制文件降级版本的特征兼容性版本。
示例, MongoDB 5.0集群中的仲裁节点节点的FCV值为 4.4。
示例
获取 FeatureCompatibilityVersion
要查看 mongod
实例的 featureCompatibilityVersion
,请在 mongod
实例上运行 getParameter
命令:
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
输出类似如下所示:
{ featureCompatibilityVersion: { version: '5.0' }, ok: 1, '$clusterTime': { clusterTime: Timestamp({ t: 1660318752, i: 5 }), signature: { hash: Binary(Buffer.from("ce0cff3621e9b089fa6d8e9a1e1efc1a1ff15dab", "hex"), 0), keyId: Long("7129893797260951557") } }, operationTime: Timestamp({ t: 1660318752, i: 5 }) }
为 MongoDB 6.0 部署设置特征兼容性版本
启用 6.0 向后不兼容的功能
要启用保留与 MongoDB 5.0 不兼容的数据的 6.0 功能,请在 MongoDB 6.0 部署上将功能兼容性设置为 "6.0"
:
注意
对 admin
数据库运行 setFeatureCompatibilityVersion
命令。
db.adminCommand( { setFeatureCompatibilityVersion: "6.0" } )
禁用 7.0 向后不兼容的功能
要禁用保留与 MongoDB 5.0 不兼容的数据的 6.0 功能,请在 MongoDB 6.0 部署上将功能兼容性设置为 "5.0"
:
注意
对 admin
数据库运行 setFeatureCompatibilityVersion
命令。
"5.0"
仅 MongoDB 5.0 和 MongoDB 6.0 部署支持 featureCompatibilityVersion。
db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
如果作为从 MongoDB 6.0 到 MongoDB 5.0 降级过程的一部分运行,则必须额外删除所有与 5.0 不兼容的保留功能。请参阅相应的降级程序。
在 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 不兼容的保留功能。请参阅相应的降级程序。
在 MongoDB 4.2 部署上设置特征兼容性版本
启用 4.2 向后不兼容的功能
要启用保留与 MongoDB 4.0不兼容的数据的4.2功能,请在 MongoDB 4.2部署上将功能兼容性设置为"4.2"
:
注意
对 admin
数据库运行 setFeatureCompatibilityVersion
命令。
db.adminCommand( { setFeatureCompatibilityVersion: "4.2" } )
设置写关注超时
以下示例将可选写关注 wtimeout
字段设置为 5000(5 秒)。
注意
对 admin
数据库运行 setFeatureCompatibilityVersion
命令。
db.adminCommand( { setFeatureCompatibilityVersion: "5.0", writeConcern: { wtimeout: 5000 } } )