参考 > 发行说明 > MongoDB 4.2发行说明 > 将副本集升级到4.2
重要
在尝试进行任何升级之前,请熟悉本文档的内容。
如果您需要有关升级到4.2的指导,则MongoDB提供主要版本升级服务,以确保平稳过渡而不会中断您的MongoDB应用程序。
升级时,请考虑以下事项:
要将现有的MongoDB部署升级到4.2,必须运行4.0系列发行版。
要从4.0系列之前的版本升级,必须连续升级主要版本,直到升级到4.0系列为止。例如,如果运行的是3.6系列,则必须先 升级到4.0, 然后才能升级到4.2。
在开始升级之前,请参阅MongoDB 4.2中的兼容性更改文档,以确保您的应用程序和部署与MongoDB 4.2兼容。开始升级之前,请解决部署中的不兼容性。
在升级MongoDB之前,请务必先在临时环境中测试应用程序,然后再将升级部署到生产环境中。
从MongoDB 3.6开始,"majority"
默认情况下,MongoDB启用对读取关注的支持
。
您可以禁用读取关注,"majority"
以防止存储高速缓存压力固定具有主从仲裁器(PSA)体系结构的三成员副本集或具有三成员PSA分片的分片群集。
注意
禁用"majority"
读取关注会影响对分片群集上事务的支持
。特别:
"snapshot"
如果事务涉及已禁用读取关注“多数”的分片,则该事务不能使用读取关注。"majority"
。但是,它不影响
副本集上的事务。对于副本集上的事务,即使禁用了读取关注,也可以为多文档事务指定读取关注"majority"
(或"snapshot"
或"local"
)"majority"
。
禁用"majority"
读取关注会禁用对MongoDB 4.0及更早版本的变更流的支持。对于MongoDB 4.2+,禁用读取关注"majority"
不会影响更改流的可用性。
当升级到4.2且禁用了“多数”阅读功能时,可以将更改流用于部署。
有关更多信息,请参见禁用多数阅读关注。
MongoDB 4.2使用版本4.0.7中引入的版本1(即v1
)更改流
恢复令牌。
恢复令牌_data
类型取决于MongoDB版本,在某些情况下,取决于更改流打开/恢复时的功能兼容性版本(fcv)(即,fcv值的更改不会影响已打开的更改流的恢复令牌。 ):
MongoDB版本 | 功能兼容版本 | 恢复令牌_data 类型 |
---|---|---|
MongoDB 4.2及更高版本 | “ 4.2”或“ 4.0” | 十六进制编码的字符串(v1 ) |
MongoDB 4.0.7及更高版本 | “ 4.0”或“ 3.6” | 十六进制编码的字符串(v1 ) |
MongoDB 4.0.6及更早版本 | “ 4.0” | 十六进制编码的字符串(v0 ) |
MongoDB 4.0.6及更早版本 | “ 3.6” | BinData |
MongoDB 3.6 | “ 3.6” | BinData |
从MongoDB 4.0.6或更早版本升级到MongoDB 4.2时
在升级过程中,客户端可能会v1
在连接到尚未更新的成员(即仅接受v0
令牌)而失败时尝试使用新的恢复令牌恢复更改流。在这种情况下,客户端必须等待4.2升级完成才能恢复更改流。
所有副本集成员必须正在运行版本4.0。要从3.6系列或更早的版本升级副本集,请首先 将副本集的所有成员升级到最新的4.0系列版本,然后按照从MongoDB 4.0升级到4.2的过程进行操作。
MongoDB 4.2删除了对不建议使用的MMAPv1存储引擎的支持。
如果您的4.0部署使用MMAPv1,则必须在升级到MongoDB 4.2之前将4.0部署更改为WiredTiger Storage Engine。有关详细信息,请参见将副本集设置为WiredTiger。
在MongoDB 4.2中,mongod
和
mongos
进程将不会以MMAPv1特定配置选项开头
。如果指定了先前版本的运行WiredTiger的MongoDB,则会忽略MMAPv1配置选项。对于MongoDB 4.2,您必须从配置中删除它们。
4.0副本集必须
featureCompatibilityVersion
设置为4.0
。
为确保副本集的所有成员都
featureCompatibilityVersion
设置为4.0
,请连接到每个副本集成员并检查featureCompatibilityVersion
:
所有成员都应返回包含的结果
。"featureCompatibilityVersion" : { "version" : "4.0" }
要设置或更新featureCompatibilityVersion
,请在主服务器上运行以下命令。大多数数据承载成员必须可用:
有关更多信息,请参见
setFeatureCompatibilityVersion
。
确保没有副本集成员处于ROLLBACK
或
RECOVERING
状态。
您可以使用“滚动”升级从MongoDB 4.0升级到4.2,以通过在其他成员可用时分别升级成员来最大程度地减少停机时间。
将mongo
外壳连接到主要节点,并用于
rs.stepDown()
降低主要节点并强制选择新的主要节点。
当rs.status()
显示主节点已卸任并且另一成员已PRIMARY
处于状态时,请升级已卸除的主抵押:
mongod
4.2二进制文件替换
二进制文件。此时,您可以运行4.2二进制文件,而没有与4.0不兼容的4.2 功能。
要启用这些4.2功能,请将功能兼容版本(FCV
)设置为4.2。
小费
启用这些向后不兼容的功能可能会使降级过程复杂化,因为在降级之前必须删除所有持久的向后不兼容的功能。
建议在升级后,允许您在不启用这些功能的情况下运行部署,并且要在预热期内确保降级的可能性最小。如果您确信降级的可能性很小,请启用这些功能。
小费
确保没有正在进行的初始同步。setFeatureCompatibilityVersion
在进行初始同步时运行
命令将导致重新启动初始同步。
在主数据库上setFeatureCompatibilityVersion
,在admin
数据库中运行命令:
此命令必须执行对内部系统集合的写入。如果由于某种原因该命令未成功完成,则可以安全地在主数据库上重试该命令,因为该操作是幂等的。
TLS
选项替换不推荐使用的SSL
选项从MongoDB 4.2开始,MongoDB弃用mongod,mongos和mongo shell的SSL选项 以及相应的net.ssl Options配置文件选项。
为避免弃用消息,请TLS
对mongod,mongos和mongo shell使用新选项
。
mongod
和mongos
配置文件的选项,请参阅配置文件页面。tls
选项,请参阅
连接字符串页面。需要与MongoDB 3.6和4.0兼容的官方驱动程序,包括retryWrites=true
在连接字符串中的选项才能
为该连接启用可重试的写入。
与MongoDB 4.2兼容的官方驱动程序默认情况下启用可重试写入。升级到需要兼容重写的4.2兼容驱动程序的应用程序可以忽略该retryWrites=true
选项。应用升级到需要的4.2兼容的驱动程序
禁用重试写操作必须包括
retryWrites=false
连接的字符串中。