升级到最新版本的 MongoDB
在本页面
MongoDB versioning的格式为X.Y.Z
,其中Z
表示修订/补丁号。修订版提供了安全修补程序,错误修复程序以及新的或更改的功能,这些功能通常不包含任何向后突破的更改。始终升级到发行系列中的最新版本。
有关版本控制的更多信息,请参见MongoDB Versioning。
Before Upgrading
Important
-
从 MongoDB 3.6.13 开始,MongoDB 3.6 系列删除了对 Ubuntu 16.04 PPCLE 的支持。
-
从 MongoDB 3.4.21 开始,MongoDB 3.4 系列删除了对 Ubuntu 16.04 PPCLE 的支持。
-
确保您拥有数据集的最新备份。参见MongoDB 备份方法。
-
有关 MongoDB 版本所特有的特殊注意事项或兼容性问题,请查阅以下文档:
-
发行说明位于Release Notes。
- 驱动程序的文档。有关更多信息,请参见Drivers和Driver Compatibility页。
-
如果您的安装包括replica sets,请在 sched 义的维护时段内计划升级。
-
在升级生产环境之前,请使用本文档中的过程来升级可复制您的生产环境的* staging *环境,以确保您的生产配置与所有更改兼容。
Note
从 MongoDB 3.6 开始,MongoDB 默认情况下启用对"majority"读取关注的支持。
对于 MongoDB 3.6.1-3.6.x,您可以禁用读取关注"majority",以防止存储高速缓存压力使具有主从仲裁器(PSA)架构的部署固定下来。禁用"majority"读取关注也将禁用对Change Streams的支持
有关更多信息,请参见禁用多数阅读关注。
Upgrade Procedure
Important
升级 MongoDB 之前,请务必备份所有数据。
使用此处描述的过程分别升级每个mongod和mongos二进制文件。升级二进制文件时,请使用过程升级 MongoDB 实例。
请遵循以下升级过程:
-
对于使用身份验证的部署,请首先升级所有 MongoDB drivers。要升级,请参见驱动程序的文档以及Driver Compatibility页。
-
升级分片群集,如升级分片群集中所述。
-
升级任何独立实例。参见升级 MongoDB 实例。
-
如升级副本集所述,升级不属于分片群集的任何副本集。
升级 MongoDB 实例
-
使用 os 的程序包 Management 工具和官方的 MongoDB 程序包升级实例。这是首选方法。参见Install MongoDB。
-
通过用新的二进制文件替换现有的二进制文件来升级实例。参见替换现有的二进制文件。
替换现有的二进制文件
Important
升级 MongoDB 之前,请务必备份所有数据。
本节介绍如何通过替换现有二进制文件来升级 MongoDB。升级的首选方法是使用 os 的程序包 Management 工具和官方的 MongoDB 程序包,如Install MongoDB中所述。
要通过替换现有的二进制文件来升级mongod或mongos实例,请执行以下操作:
-
从MongoDB 下载页面下载最新的 MongoDB 版本的二进制文件,并将这些二进制文件存储在一个临时位置。这些二进制文件以 zipfile 的形式下载,这些文件解压缩到 MongoDB 安装所使用的目录结构中。
-
关闭实例。
-
用下载的二进制文件替换现有的 MongoDB 二进制文件。
-
重新启动实例。
升级分片群集
在版本 3.4 中更改:该过程适用于 3.6. 要对其他版本的 MongoDB 分片群集进行版本升级,请参阅手册的相应版本。
要升级 3.6 分片群集:
-
如禁用平衡器所述,禁用群集的平衡器。
要升级配置服务器副本集,请使用升级副本集中的过程。
-
升级每个碎片。
-
如果分片是副本集,请使用标题为升级副本集的过程升级分片。
-
如果分片是独立实例,请使用名为升级 MongoDB 实例的过程升级分片。
-
按照升级 MongoDB 实例中的说明升级每个mongos实例。您可以按任何 Sequences 升级mongos实例。
-
按照启用平衡器所述重新启用平衡器。
升级副本集
要升级副本集,请分别从secondaries到primary分别升级每个成员。在 sched 义的维护时段内计划升级。
Upgrade Secondaries
分别升级每个辅助节点,如下所示:
-
按照升级 MongoDB 实例中的说明升级辅助节点的mongod二进制文件。
-
升级辅助节点后,请 await 辅助节点恢复到
SECONDARY
状态,然后再升级下一个实例。要检查成员的状态,请在mongo shell 中发出rs.status()。
辅助节点可能会短暂进入STARTUP2
或RECOVERING
。这是正常的。在 continue 升级之前,请确保 await 辅助节点完全恢复到SECONDARY
。
升级主数据库
-
降级主数据库以启动正常的failover程序。使用以下之一:
-
mongo shell 中的rs.stepDown()助手。
-
replSetStepDown数据库命令。
在故障转移期间,该集不能接受写入。通常,这需要 10 到 20 秒。在 sched 义的维护时段内计划升级。
Note
降低主数据库比直接“关闭”主数据库更好。降级可加快故障转移过程。
-
主数据库降级后,请从mongo shell 调用rs.status()方法,直到看到另一个成员已处于
PRIMARY
状态。 -
按照升级 MongoDB 实例中的说明关闭原始主数据库并升级其实例。