对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

将副本集升级到8.0

在升级到 MongoDB 8.0 之前,请熟悉本文档的内容,包括仔细查看先决条件。

MongoDB 8.0 引入了较MongoDB 7.0 显着的性能改进,包括但不限于:

  • 读取吞吐量提高高达 36%。

  • 典型 Web 应用程序的性能提高高达 32%。

  • 复制期间并发写入速度提高高达 20%。

注意

性能提升的幅度可能会有所不同,具体取决于工作负载和数据库实例的配置。

要学习;了解更多信息,请参阅性能改进。

以下步骤概述了将副本集节点 mongod 从版本 7.0 升级到 8.0 的过程。

If you need guidance on upgrading to 8.0, MongoDB professional services offer major version upgrade support to help ensure a smooth transition without interruption to your MongoDB application.

升级时,请考虑以下几点:

要将现有 MongoDB 部署升级到 8.0,您必须运行 7.0 系列版本。

要从 7.0 系列之前的版本升级,您必须连续升级主要版本,直到升级到 7.0 系列。例如,如果您运行的是 6.0 系列版本,则必须先升级到 7.0 版本,然后才能升级到 8.0。

Before you upgrade MongoDB, check that you're using a MongoDB 8.0-compatible driver. Consult the driver documentation for your specific driver to verify compatibility with MongoDB 8.0.

在不兼容的驱动程序上运行的升级部署可能会遇到意外或未定义的行为。

在开始升级之前,请参阅 MongoDB 8.0 中的兼容性变更文档,以确保您的应用程序和部署与 MongoDB 8.0 兼容。在开始升级之前,请解决部署中的不兼容问题。

在升级 MongoDB 之前,请务必在临时环境中测试您的应用程序,然后再将升级部署到生产环境。

如果没有支持的帮助,您无法降级部署的二进制版本。

要学习;了解更多信息,请参阅将8.0降级至7.0 。

所有副本集节点必须运行7.0版本。 要从6.0系列及更早版本升级副本集集,请先将副本集的所有节点升级到最新的7.0系列发布,然后按照步骤从MongoDB 7.0升级到8 。 0 。

7.0 副本集必须将 featureCompatibilityVersion 设置为 "7.0"。

要确保副本集的所有成员都将 featureCompatibilityVersion 设置为 "7.0",请连接到每个副本集成员并检查 featureCompatibilityVersion:

db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )

所有成员都应返回包含 "featureCompatibilityVersion" : { "version" : "7.0" } 的结果。

要设置或更新 featureCompatibilityVersion,请在主节点上运行以下命令。大多数数据承载节点必须可用:

db.adminCommand( { setFeatureCompatibilityVersion: "7.0" , confirm: true } )

有关更多信息,请参阅 setFeatureCompatibilityVersion。

通过发出 replSetGetStatus 命令,确保没有副本集成员处于 ROLLBACK 或 RECOVERING 状态:

db.adminCommand( { replSetGetStatus: 1 } )

升级到MongoDB 8.0 时,如果您有任何不是时间序列集合的 system.buckets 集合,则可能需要在升级之前对这些集合进行 drop 或 rename 操作,具体取决于您的 8。0 补丁发布:

MongoDB 8.0.5 及更高版本

在升级之前,您无需删除不是时间序列集合的 system.buckets 集合。但是,您必须在完成升级后删除或重命名它们。

MongoDB 8.0.4 及更早版本

在升级之前,必须删除或重命名不是时间序列集合的 system.buckets 集合。在升级到版本 8.0.0 - 8.0.4 之前,所有 system.buckets 集合必须配置有效的 时间序列选项。

要确定是否有非时间序列集合的system.buckets 集合,请使用过滤的db.getCollectionInfos() 方法:

db.getCollectionInfos(
{
$and: [
{ name: { $regex: /^system\.buckets/ } },
{ 'options.timeseries': { $exists: false } }
]
}
)

如果从 MongoDB apt、yum、dnf 或 zypper 存储库安装 MongoDB,则应使用包管理器升级到 8.0。

按照适用于Linux系统的相应8.0 安装说明进行操作。这需要为新发布添加存储库,然后执行实际的升级过程。

If you have not installed MongoDB using a package manager, you can manually download the MongoDB binaries from the MongoDB Download Center.

请参阅 8.0 安装说明了解更多信息。

可以使用“滚动”升级从 MongoDB 7.0 升级到 8.0,即在其他成员可用时单独升级各个成员,从而最大限度地减少停机时间。

1

To shut down the mongod process, use mongosh to connect to the replica set member and run the following command:

db.adminCommand( { shutdown: 1 } )
2

逐个升级副本集的从节点成员:

  1. 将 7.0 二进制文件替换为 8.0 二进制文件。

  2. 重新启动成员。

3

Connect mongosh to the primary and use rs.stepDown() to step down the primary and force an election of a new primary.

4

当 rs.status() 显示主节点已降级,并且另一个成员已显示为 PRIMARY 状态时,升级已降级的主节点:

  1. 关闭降级主节点 (primary node in the replica set)节点,并将mongod二进制文件替换为8.0二进制文件。

  2. 重新启动成员。

5

此时,您可以运行 8.0 二进制文件,而不会启用与 7.0 不兼容的 8.0 功能。

要启用这些 8.0 功能,设立特征兼容性版本(FCV) 设置为 8.0。如果升级到 7.0 或更高版本,还必须将 confirm设立为 true。

提示

启用这些向后不兼容的功能可能会使降级过程变得复杂,因为在降级之前,您必须删除任何持续存在的向后不兼容的功能。

升级后,建议让部署在不启用这些功能的情况下稳定运行一段时间,以确保降级回老版本的可能性极小。当确信降级的可能性非常小时,请启用这些功能。

提示

确保没有正在进行任何初始同步。在初始同步过程中运行 setFeatureCompatibilityVersion 命令将导致重新启动初始同步。

在主节点上,运行 admin 数据库中的 setFeatureCompatibilityVersion 命令:

db.adminCommand( { setFeatureCompatibilityVersion: "8.0", confirm: true } )

设置 featureCompatibilityVersion (FCV) : "8.0 "隐式执行replSetReconfig 以将term 字段添加到配置文档中,并阻塞,直到新配置传播到大多数副本集节点。

此命令必须执行对内部系统集合的写入。如果由于任何原因未成功完成该命令,则可以在主节点上安全地重试该命令,因为该操作是幂等的。

If you experience startup issues after you upgrade, contact MongoDB Support for assistance.