在本页面
4.2.6中修复的问题:
注意
由于在发行过程中遇到问题,因此跳过了版本4.2.4的发行。但是,4.2.5版本包含4.2.4中所做的修复。
4.2.5中修复的问题:
4.2.4中修复的问题:
已解决的问题:
已解决的问题:
已解决的问题:
分布式事务和多文档事务
从MongoDB 4.2开始,这两个术语是同义词。分布式事务是指分片群集和副本集上的多文档事务。从MongoDB 4.2开始,多文档事务(无论是在分片群集或副本集上)也称为分布式事务。
在版本4.2中,MongoDB引入了分布式事务。分布式交易:
4.2
。4.2
。16MB
每个条目的最大大小)以封装事务中的所有写操作。在MongoDB 4.0中,MongoDB为事务中的所有写操作创建单个条目,从而对事务施加16MB的总大小限制。有关更多信息,请参见事务。
也可以看看
MongoDB 4.2删除了不赞成使用的MMAPv1存储引擎。
如果您的4.0部署使用MMAPv1,则必须在升级到MongoDB 4.2之前将部署更改为 WiredTiger Storage Engine。有关详细信息,请参见:
MongoDB删除了以下特定于MMAPv1的配置选项:
删除配置文件设置 | 删除的命令行选项 |
---|---|
storage.mmapv1.journal.commitIntervalMs |
|
storage.mmapv1.journal.debugFlags |
mongod --journalOptions |
storage.mmapv1.nsSize |
mongod --nssize |
storage.mmapv1.preallocDataFiles |
mongod --noprealloc |
storage.mmapv1.quota.enforced |
mongod --quota |
storage.mmapv1.quota.maxFilesPerDB |
mongod --quotaFiles |
storage.mmapv1.smallFiles |
mongod --smallfiles |
storage.repairPath |
mongod --repairpath |
replication.secondaryIndexPrefetch |
mongod --replIndexPrefetch |
注意
从4.2版开始,MongoDB进程将不会以这些选项开头。如果使用WiredTiger部署,请删除所有MMAPv1特定的配置选项。
MongoDB删除MMAPv1特定touch
命令。
删除的命令 | 删除方法 | 笔记 |
---|---|---|
group |
db.collection.group() |
而是db.collection.aggregate() 与$group 舞台一起
使用。 |
eval |
MongoDB 4.2 mongo Shell方法
db.eval() ,db.collection.copyTo() 仅在连接到MongoDB 4.0或更早版本时才能运行。 |
|
copydb |
仅当连接到MongoDB 4.0或更早版本时,相应的 或者,用户可以使用 |
|
clone |
仅当连接到MongoDB 4.0或更早版本时,相应的 或者,用户可以使用 |
|
geoNear |
而是 有关更多信息,请参阅删除对geoNear命令的支持。 |
|
parallelCollectionScan |
||
repairDatabase |
db.repairDatabase() |
有关更多信息,请参见删除对repairDatabase命令的支持。 |
getPrevError |
db.getPrevError() |
maxScan
选项¶MongoDB删除了maxScan
该
find
命令和mongo
shell助手
的不推荐使用的选项cursor.maxScan()
。请使用命令maxTimeMS
选项
find
或帮助程序cursor.maxTimeMS()
。
从MongoDB 4.2开始,除非分片键字段是不可变_id
字段,否则您可以更新文档的分片键值。有关更新分片键的详细信息,请参阅“ 更改文档的分片键值”。
在MongoDB 4.2之前,文档的分片键字段值是不可变的。
mongodump
并且不能作为正在进行分片事务的4.2+分片群集的备份策略的一部分,因为使用创建的备份
不能保持跨分片事务的原子性保证。mongorestore
mongodump
对于具有正在进行中的分片事务的4.2+分片群集,请使用以下协调的备份和还原过程之一,该过程 确实维护了跨分片事务的原子性保证:
从MongoDB 4.2开始:
该balancerStart
命令和
mongo
Shell帮助程序方法
sh.startBalancer()
,
sh.setBalancerState(true)
还启用了分片群集的自动拆分。
sh.disableAutoSplit()
。该balancerStop
命令和mongo
外壳帮助程序方法sh.stopBalancer()
,
sh.setBalancerState(false)
还禁用分片群集的自动拆分。
sh.enableAutoSplit()
。该mongo
方法
sh.enableBalancing(namespace)
和
sh.disableBalancing(namespace)
对自动分裂没有影响。
mongos
连接池¶从MongoDB 4.2开始,MongoDB将ShardingTaskExecutorPoolReplicaSetMatching
确定mongos
实例连接池的最小大小(在运行时可能变化)
的参数添加
到分片群集的每个成员。
默认情况下,对于分片群集中的每个副本集(即,分片副本集和配置服务器),mongos
维护与每个辅助副本集的连接池至少等于其与主副本集的连接池的大小。
从MongoDB 4.2开始,
替换文档操作,例如db.collection.replaceOne()
或db.collection.update(query, replace
,…),首先尝试使用查询过滤器来定位单个分片。如果该操作无法通过查询过滤器定位到单个分片,则它将尝试以替换文档定位。
在早期版本中,该操作尝试使用替换文档作为目标。
对于包含
并在分片集合上的替换文档操作,必须在完整分片键上包含相等匹配项。upsert: true
filter
MongoDB 4.2包含的修复程序可解决以下常见漏洞和披露(CVE):
TLS
选项¶MongoDB 4.2 TLS
为mongod,mongos和
mongo shell添加了选项,以替换相应的
SSL
选项(在4.2中已弃用)。新的TLS选项提供
与不推荐使用的SSL
选项相同的功能,因为MongoDB一直支持TLS 1.0和更高版本。
mongod
和mongos
配置文件的选项,请参阅配置文件页面。tls
选项,请参阅
连接字符串页面。小费
也可以看看
tls
参数¶新参数 | 描述 |
---|---|
tlsWithholdClientCertificate |
可用于mongod 和mongos ,参数可以被设置为true 从发送其停止实例TLS 证书发起与其他群集内通信时mongod 或
mongos 实例。有关详细信息,请参见
tlsWithholdClientCertificate 。 |
tlsX509ClusterAuthDNOverride |
可用于 您可以使用此参数将证书滚动更新为包含新 |
tlsClusterCAFile
选项¶MongoDB的4.2增加了
--tlsClusterCAFile
选项/ net.tls.clusterCAFile
为
mongod
和mongos
,其中指定
.pem
用于从客户端建立连接验证TLS证书文件。这使您可以使用单独的证书颁发机构来验证TLS握手的客户端到服务器以及服务器到客户端部分。
也可以看看
从Linux上的4.2版本开始:
prime256v1
命名曲线来启用ECDHE支持。在MongoDB的早期版本(3.6.14+和4.0.3+)中,如果在编译期间Linux平台的OpenSSL支持ECDH参数的自动曲线选择,则MongoDB可以支持临时椭圆曲线Diffie-Hellman(ECDHE)。
在Windows和macOS上,MongoDB对ECDHE和DH的支持与早期版本保持不变。也就是说,通过使用平台各自的本机TLS / SSL OS库隐含了支持。
有关更多信息,请参见转发保密。
passwordPrompt()
¶从mongo
Shell的4.2版本开始,您可以将该passwordPrompt()
方法与各种用户身份验证/管理方法/命令结合使用以提示输入密码,而不是直接在方法/命令调用中指定密码。但是,您仍然可以像在早期版本的mongo
Shell中一样直接指定密码
。
例如:
从MongoDB 4.2开始,用于内部成员身份验证的密钥文件使用YAML格式,以允许密钥文件中包含多个密钥。YAML格式接受以下内容:
YAML格式与使用文本文件格式的现有单键密钥文件兼容。
libldap
和libldap_r
¶对于链接到的MongoDB 4.2(和4.0.9)企业二进制文件
libldap
(例如在RHEL上运行时),对的访问
libldap
是同步的,这会导致性能/延迟成本。
对于链接到的MongoDB 4.2(和4.0.9)企业二进制文件,与
libldap_r
早期MongoDB版本相比,行为没有变化。
对于
配置了密码的加密存储引擎AES256-GCM
:
从4.2开始,如果您从通过“热”备份(即mongod
正在运行)获取的文件中还原,MongoDB可以在启动时检测“脏”密钥并自动翻转数据库密钥以避免IV(初始化向量)重用。
但是,如果您从通过“冷”备份获取的文件中恢复(即mongod
未运行),则MongoDB无法在启动时检测到“脏”密钥,并且IV的重用会使机密性和完整性保证无效。
从4.2开始,为避免从冷文件系统快照还原后重新使用密钥,MongoDB添加了一个新的命令行选项--eseDatabaseKeyRollover
。使用该--eseDatabaseKeyRollover
选项启动后
,mongod
实例将滚动使用AES256-GCM
密码配置的数据库密钥
并退出。
有关更多信息,请参阅加密的存储引擎和--eseDatabaseKeyRollover
。
官方