参考 > 发行说明 > MongoDB 4.2发行说明 > 降级4.2至4.0 > 降级4.2副本设置为4.0
在尝试任何降级之前,请熟悉本文档的内容。
升级到4.2后,如果需要降级,建议将其降级到最新的4.0补丁程序。
小费
如果降级,
从MongoDB 4.2开始,无论是否支持读关注,更改流都可用"majority"
。也就是说,majority
可以启用阅读关注支持(默认)或禁用
以使用更改流。
在MongoDB 4.0和更早版本中,更改流仅在"majority"
启用了阅读关注支持时才可用(默认)。
降级到4.0系列后,如果您已禁用读取关注,则更改流将被禁用"majority"
。
可选,但推荐。 创建数据库的备份。
要将版本从4.2降级到4.0,必须删除保留的不兼容功能和/或更新不兼容的配置设置。这些包括:
小费
setFeatureCompatibilityVersion
在进行初始同步时运行
命令将导致重新启动初始同步。ROLLBACK
或
RECOVERING
状态。要降级分片featureCompatibilityVersion
群集的:
将mongo
外壳连接到主服务器。
降级featureCompatibilityVersion
到"4.0"
。
该setFeatureCompatibilityVersion
命令执行对内部系统集合的写操作,并且是幂等的。如果由于某种原因该命令未能成功完成,请在主服务器上重试该命令。
为确保副本集的所有成员都反映更新的内容
featureCompatibilityVersion
,请连接到每个副本集成员并检查featureCompatibilityVersion
:
所有成员应返回的结果包括:
如果任何成员返回featureCompatibilityVersion
的"4.2"
,请等待该成员反映版本,"4.0"
然后再继续。
有关返回featureCompatibilityVersion
值的更多信息,请参见View FeatureCompatibilityVersion。
仅当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 Journal Compression,请在执行日记压缩器的必备步骤之后执行以下步骤。
该zstd压缩库可在4.2版本开始。对于任何使用zstd 压缩存储数据的成员,降级过程将要求该成员进行初始同步。准备:
为该实例创建一个新的空白。此目录将在下面的降级过程中使用。data directory
mongod
重要
确保正在运行的用户帐户mongod
具有新目录的读写权限。
如果使用配置文件,请更新该文件以准备降级过程:
storage.wiredTiger.collectionConfig.blockCompressor
以使用默认压缩器(snappy
)或设置为其他4.0支持的压缩器。storage.dbPath
到新的数据目录。zstd
日记压缩¶该zstd压缩库可用于日志数据压缩在4.2版本开始。
对于使用zstd库作为日记压缩器的任何成员:
zstd
用于日记压缩和数据压缩,storage.wiredTiger.engineConfig.journalCompressor
以使用默认压缩器(snappy
)或设置为其他4.0支持的压缩器。zstd
仅用于日记压缩,注意
以下过程涉及在没有日志的情况下作为独立实例重新启动副本成员。
对mongod
实例执行干净关闭:
更新配置文件以准备独立启动:
storage.journal.enabled
到false
。disableLogicalSessionCacheRefresh
为
。true
setParameter
例如:
如果使用命令行选项而不是配置文件,则必须在重新启动期间更新命令行选项。
重新启动mongod
实例:
如果您使用的是配置文件:
如果您使用命令行选项而不是配置文件,
--nojournal
选项--replSet
):disableLogicalSessionCacheRefresh
为。true
--setParameter
对mongod
实例执行干净关闭:
确认该进程不再运行。
更新配置文件以准备使用新的日志压缩器作为副本集成员重新启动:
storage.journal.enabled
设置。disableLogicalSessionCacheRefresh
参数。storage.wiredTiger.engineConfig.journalCompressor
设置以使用默认的日志压缩器或指定新值。例如:
如果使用命令行选项而不是配置文件,则必须在下面的重新启动过程中更新命令行选项。
mongod
作为副本集成员重新启动实例:
如果您使用的是配置文件:
如果您使用命令行选项而不是配置文件:
--nojournal
选项。--wiredTigerJournalCompressor
命令行选项以使用默认的日志压缩器或更新为新值。disableLogicalSessionCacheRefresh
参数。zstd
网络压缩¶该zstd压缩库可用于网络消息压缩4.2版开始。
准备降级:
对于使用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兼容的文档验证语法:
- 或 -
警告
在继续降级过程之前,请确保所有副本集成员(包括延迟的副本集成员)均反映出先决条件更改。也就是说,featureCompatibilityVersion
在降级之前,请检查每个节点的
和并删除不兼容的功能。
使用软件包管理器或手动下载,可获得4.0系列的最新版本。如果使用程序包管理器,请为4.0二进制文件添加新的存储库,然后执行实际的降级过程。
升级到4.2后,如果需要降级,建议将其降级到最新的4.0补丁程序。
降级副本集的每个辅助成员,一次降级一个:
关闭mongod
。有关安全终止进程的其他方法,请参阅
停止mongod进程mongod
。
将4.2二进制文件替换为4.0二进制文件,然后重新启动。
注意
如果您使用命令行选项而不是配置文件,请在重新启动期间根据需要更新命令行选项。
mongod
实例使用zstd
数据压缩,--dbpath
到新目录(在先决条件期间创建)。--wiredTigerCollectionBlockCompressor
以使用默认
snappy
压缩器(或者,将其显式设置为支持4.0的压缩器)。mongod
实例使用zstd
日志压缩,--wiredTigerJournalCompressor
以使用默认snappy
压缩器(或者,将其显式设置为支持4.0的压缩器)。mongod
实例包括zstd
网络消息压缩,--networkMessageCompressors
以使用默认snappy,zlib
压缩器启用消息压缩。或者,显式指定压缩器。等待成员恢复SECONDARY
状态。要检查成员的状态,请将mongo
外壳连接到成员并运行rs.status()
方法。
成员SECONDARY
上台后,将其降级。