Docs 菜单

Docs 主页开发应用程序MongoDB Manual

将 4.4 独立运行版降级至 4.2

在此页面上

  • 降级路径
  • 创建备份
  • 访问控制
  • 先决条件
  • 步骤

在尝试任何降级之前,请先熟悉本文档的内容。

如果需要从 4.4 降级,请降级到最新的 4.2 补丁版本。

MongoDB 仅支持单版本降级。您无法降级到比当前版本落后多个版本的版本。

例如,您可以将 4.4 系列部署降级为 4.2 系列部署。但是,不支持将 4.2 系列部署进一步降级为 4.0 系列部署。

警告

降级下限

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

可选但建议使用。创建数据库备份。

如果部署已启用访问控制,则降级用户权限必须包括跨数据库列出和管理索引的权限。具有 root 角色的用户拥有所需的权限。

要从 4.4 降级到 4.2,您必须删除保留的不兼容功能和/或更新不兼容的配置设置。 其中包括:

从 MongoDB 4.4 开始:

未分片collection和视图的命名空间长度限制为 255 字节,分片collection的命名空间长度限制为 235 字节。对于collection或视图,命名空间包括数据库名称、点 ( . ) 分隔符和collection/视图名称(例如<database>.<collection> )。

在降级之前,请解析命名空间超过特征兼容性版本 (FCV) 4.2 的 120 字节命名空间长度限制的任何collection或视图。

要确定collection或命名空间是否超过 120 字节限制,请将mongo shell 连接到mongod实例并运行:

db.adminCommand("listDatabases").databases.forEach(function(d){
let mdb = db.getSiblingDB(d.name);
mdb.getCollectionInfos( ).forEach(function(c){
namespace = d.name + "." + c.name
namespacelenBytes = encodeURIComponent(namespace).length
if (namespacelenBytes > 120) {
print (c.type.toUpperCase() + " namespace exceeds 120 bytes:: " + namespace )
}
} )
})

如果任何collection或视图命名空间超过 120 字节,则在降级 FCV之前执行

  • 使用renameCollection命令重命名collection。

  • 对于视图,使用db.createView()以更短的名称重新创建视图,然后删除原始视图。

要降级独立运行的 featureCompatibilityVersion,请执行以下操作:

  1. mongo Shell 连接到 mongod 实例。

  2. featureCompatibilityVersion 降级为 "4.2"

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

    setFeatureCompatibilityVersion 命令对内部系统集合执行写入操作,并且是幂等的。如果由于任何原因未成功完成该命令,请在 mongod 实例上重试该命令。

仅当 fCV 设置为 "4.4" 时,才需要执行以下步骤。

删除所有与 4.2 不兼容的保留 4.4功能。 其中包括:

复合哈希索引

删除所有复合哈希索引。

使用db.collection.getIndexes()识别集合中的任何复合哈希索引,并使用db.collection.dropIndex()删除这些索引。

删除所有使用 4.4 功能的保留功能。 这些包括但不限于:

警告

在继续执行降级过程之前,请确保已满足先决条件。

1

使用包经理或手动下载,获取 4.2 系列的最新版本。如果使用包经理,请为 4.2 二进制文件添加新的存储库,然后执行实际的降级过程。

重要

升级或降级副本集之前,请确保所有副本集节点都正在运行。否则,升级或降级操作将在所有节点启动后才会完成。

如果需要从 4.4 降级,请降级到最新的 4.2 补丁版本。

2

要完全关闭mongod进程,请将mongo Shell 连接到实例并运行:

db.adminCommand( { shutdown: 1 } )

彻底关闭 mongod 会完成所有待处理操作,将所有数据刷新到数据文件中,并关闭所有数据文件。

3

将 4.4 二进制文件替换为下载的 4.2 mongod二进制文件,然后重新启动。

← 将 4.4 降级到 4.2