Docs 菜单

Docs 主页开发应用程序MongoDB Manual

将副本集升级至 4.4

在此页面上

  • 升级建议和清单
  • 先决条件
  • 下载 4.4 二进制文件
  • 升级进程
  • 其他升级程序

警告

将包含 MongoDB 3.0 元数据的 MongoDB 4.2 系列部署升级到 4.4 系列部署时,必须升级到MongoDB 4.4.1 或更高版本。 在没有严重停机风险的情况下,您无法成功将包含 MongoDB 3.0 元数据的部署升级到 MongoDB 4.4.0。

有关更多信息,请参阅 WT-6623 。

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

如果您需要有关升级到4的指导。 4 , MongoDB 专业服务提供主要版本升级支持,帮助确保 MongoDB 应用程序平稳过渡而不中断。

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

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

要从早于4的版本升级。 2 - 系列,您必须连续升级主要版本,直到升级到4 。 2 -系列。例如,如果您正在运行4 。 0 - 系列,您必须先升级到4 。 2 ,然后才能升级到4 。 4 。

在升级 MongoDB 之前,请检查您是否正在使用 MongoDB 4 。 4兼容驱动程序。请查阅特定驱动程序的驱动程序文档,验证与 MongoDB 4的兼容性。 4 。

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

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

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

升级到4后。 4 ,如果需要降级,我们建议降级到4的最新补丁版本。 2 。

警告

降级下限

如果需要从版本 4.4 降级,请降级到 4.2.6 或更高版本。 您无法降级到 4.2.5 或更早的版本。

所有副本集节点必须运行版本4 。 2 。要从4升级副本集。 0 - 系列及更早版本,首先将副本集的所有成员升级到最新的4 。 2 -series 版本,然后按照步骤从 MongoDB 4升级。 2改为4 。 4 。

在升级副本集的成员之前,请确认该成员已完全关闭。

4.2 副本集必须将 featureCompatibilityVersion设置为"4.2"

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

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

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

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

db.adminCommand( { setFeatureCompatibilityVersion: "4.2" } )

有关更多信息,请参阅 setFeatureCompatibilityVersion

确保没有副本集成员处于 ROLLBACKRECOVERING 状态。

如果您从 MongoDB aptyumdnfzypper存储库安装 MongoDB,则应使用包管理器升级到 4.4。

请按照适用于您的 Linux 系统的相应4.4 安装说明进行操作。 这将涉及为新版本添加存储库,然后执行实际的升级过程。

如果您尚未使用包管理器安装 MongoDB,则可以从MongoDB 下载中心手动下载 MongoDB 二进制文件。

有关更多信息,请参阅4.4 安装说明

警告

如果将现有的 MongoDB 实例升级到 MongoDB 4.4.19,并且在mongod.conf文件中设置了fork: true ,则该实例可能无法启动。

升级问题会影响所有使用.deb.rpm 安装包的 MongoDB 实例。使用 tarball (.tgz ) 版本或其他软件包类型的安装不受影响。有关详细信息,请参阅 SERVER-74345 。

要删除fork: true设置,请从系统终端运行以下命令:

systemctl stop mongod.service
sed -i.bak '/fork: true/d' /etc/mongod.conf
systemctl start mongod.service

删除设置后,第二个systemctl命令将启动升级后的实例。

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

1

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

  1. 关闭mongod实例,并将 4.2 二进制文件替换为 4.4 二进制文件。

  2. 重新启动成员。

2

mongo Shell 连接到主节点,并使用rs.stepDown()降级主节点并强制选举新的主节点。

3

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

  1. 关闭降级主节点,并将mongod二进制文件替换为 4.4 二进制文件。

  2. 重新启动成员。

4

在这个点,您可以运行 4.4 二进制文件,而无需使用与 4.2 不兼容的 4.4功能

要启用这些 4.4 功能,请将功能兼容性版本 ( fCV ) 设置为 4.4。

提示

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

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

提示

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

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

db.adminCommand( { setFeatureCompatibilityVersion: "4.4" } )

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

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

← 将独立实例升级到 4.4