参考 > 发行说明 > MongoDB 4.2发行说明 > 降级4.2至4.0 > 将4.2独立版降级到4.0
在尝试任何降级之前,请熟悉本文档的内容。
升级到4.2后,如果需要降级,建议将其降级到最新的4.0补丁程序。
小费
如果降级,
可选,但推荐。 创建数据库的备份。
要将版本从4.2降级到4.0,必须删除保留的不兼容功能和/或更新不兼容的配置设置。这些包括:
要降级分片featureCompatibilityVersion
群集的:
降级featureCompatibilityVersion
到"4.0"
。
该setFeatureCompatibilityVersion
命令执行对内部系统集合的写操作,并且是幂等的。如果由于某种原因该命令未成功完成,请在mongod
实例上重试该命令
。
仅当fCV设置为时,才需要执行以下步骤
"4.2"
。
删除所有与4.0不兼容的持久性4.2功能。这些包括:
从MongoDB 4.2开始,对于featureCompatibilityVersion
(fCV)设置为"4.2"
或更大,MongoDB会删除。对于fCV设置为,该限制仍然适用。Index Key
Limit
"4.0"
如果索引的键超过将fCV设置为的索引,请考虑将索引更改为哈希索引或索引计算值。您也可以在解决问题之前暂时使用
set to 。但是,设置
为时,使用这些索引的查询可能返回不完整的结果。Index Key
Limit
"4.0"
failIndexKeyTooLong
false
failIndexKeyTooLong
false
从MongoDB 4.2开始,对于featureCompatibilityVersion
(fCV)设置为"4.2"
或更大,MongoDB会删除。对于fCV设置为,该限制仍然适用。Index Name
Length
"4.0"
如果索引的名称超出了将fCV设置为的一次,请删除并重新创建一个具有较短名称的索引。Index Name
Length
"4.0"
对于featureCompatibilityVersion
(fCV)设置为"4.2"
,MongoDB支持创建通配符索引。在降级为fCV之前,必须删除所有通配符索引"4.0"
。
使用以下脚本删除并重新创建所有通配符索引:
重要
"4.0"
在进行中的通配符索引构建期间降级到fCV 不会自动删除或终止索引构建。降级到fcv后,索引构建可以完成"4.0"
,从而在集合上产生有效的通配符索引。针对该数据目录启动4.0二进制文件将导致启动失败。
使用db.currentOp()
来检查任何正在进行中的通配符建立索引。一旦任何正在进行的通配符索引构建完成,请运行脚本以将其删除,然后再降级为fCV "4.0"
。
降级的二进制文件之前,修改只读视图定义和收集验证包括定义4.2运营商,如
$set
,$unset
,$replaceWith
。
$set
舞台,请改用$addFields
舞台。$replaceWith
舞台,请改用
$replaceRoot
舞台。$unset
舞台,请改用$project
舞台。您可以通过以下方式修改视图:
db.myview.drop()
方法)并重新创建视图(db.createView()
方法)或collMod
命令。您可以通过以下方式修改大学验证验证表达式:
collMod
命令。tls
前缀配置¶从MongoDB 4.2开始,MongoDB添加"tls"
-prefixed选项作为选项的别名"ssl"-prefixed
。
如果您的部署或客户端使用"tls"
-prefixed选项,请用mongod,mongos和mongo shell
和驱动程序的相应"ssl"-prefixed
选项
替换。
zstd
压缩降级¶zstd
数据压缩¶该zstd压缩库可在4.2版本开始。
如果您的独立服务器使用zstd压缩有任何数据:
小费
在完成所有其他先决条件步骤之后,请执行此步骤。
停止对实例的所有写入。
mongodump
在开始降级之前创建数据库的一个;mongodump
输出未压缩的数据。
包括任何其他选项,例如--username
,--password
以及
--authenticationDatabase
如果你的独立实施访问控制。
为该实例创建一个新的空白。此目录将在下面的降级过程中使用。data directory
mongod
重要
确保正在运行的用户帐户mongod
具有新目录的读写权限。
如果使用配置文件,请更新该文件以准备降级过程:
storage.wiredTiger.collectionConfig.blockCompressor
以使用默认压缩器(snappy
)或设置为其他4.0支持的压缩器。storage.dbPath
到新的数据目录。zstd
日记压缩¶zstd
网络压缩¶该zstd压缩库可用于网络消息压缩4.2版开始。
准备降级:
对于mongod
使用zstd进行网络消息压缩并使用配置文件的实例,请更新
net.compression.compressors
设置以为降级过程中的重新启动做准备。
对于zstd
在其中指定的任何客户端,请更新以从列表中删除。URI
connection string
zstd
对于在
mongo
其中指定的任何shell ,请更新以从列表中删除。zstd
--networkMessageCompressors
zstd
重要
当双方都启用网络压缩时,消息将被压缩。否则,双方之间的消息将不被压缩。
重要
在降级服务器之前,请删除应用程序中的客户端字段级加密代码 。
MongoDB 4.2增加了对
强制客户端字段级加密的支持,这是集合的
JSON Schema文档验证的一部分。具体来说,该$jsonSchema
对象支持
encrypt
和encryptMetadata
关键字。MongoDB的4.0并不能支持这些关键字,并无法启动如有收集指定这些关键字作为验证的一部分$jsonSchema
。
db.getCollectionInfos()
在每个数据库上使用以标识指定自动字段级加密规则的集合,作为$jsonSchema
验证程序的一部分。要准备降级,请使用不兼容4.0的关键字对每个集合执行以下任一操作:
使用collMod
修改集合的
validator
并更换$jsonSchema
有一个只包含一个模式
4.0兼容的文档验证语法:
- 或 -
警告
在继续降级过程之前,请确保先决条件已完成。
使用软件包管理器或手动下载,可获得4.0系列的最新版本。如果使用程序包管理器,请为4.0二进制文件添加新的存储库,然后执行实际的降级过程。
升级到4.2后,如果需要降级,建议将其降级到最新的4.0补丁程序。
mongod
实例重新启动。¶关闭您的mongod
实例。为了安全地终止该mongod
进程,可以将mongo
外壳连接
到实例并运行:
有关安全终止mongod
实例的其他方法
,请参阅
Stop mongod Processes。
用下载的4.0 mongod
二进制文件替换4.2二进制
文件并重新启动。
注意
如果您使用命令行选项而不是配置文件,请在重新启动期间根据需要更新命令行选项。
mongod
实例使用zstd
数据压缩,--dbpath
到新目录(在先决条件期间创建)。--wiredTigerCollectionBlockCompressor
以使用默认
snappy
压缩器(或者,将其显式设置为支持4.0的压缩器)。mongod
实例使用zstd
日志压缩,--wiredTigerJournalCompressor
以使用默认snappy
压缩器(或者,将其显式设置为支持4.0的压缩器)。mongod
实例包括zstd
网络消息压缩,--networkMessageCompressors
以使用默认snappy,zlib
压缩器启用消息压缩。或者,显式指定压缩器。zstd
压缩模式切换,请还原数据。¶如果尚未从使用zstd压缩的独立版本降级,请跳过此步骤。
如果您已经从使用一个独立的降级zstd,您已经创建了数据的转储作为先决条件。使用mongorestore
该数据恢复至4.0独立。