Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

将 6.0 副本集降级至 5.0

在此页面上

  • 降级路径
  • 访问控制
  • 先决条件
  • 降级程序

尝试降级之前,请先熟悉本页面的内容。

重要

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

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

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

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

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

在开始降级程序之前,必须完成以下先决条件步骤。

1

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

要了解如何创建备份,请参阅自托管部署的备份方法。

2

如需从 6.0 降级到 5.0,必须删除与 5.0 不兼容的 6.0 功能。有关不兼容功能的列表以及如何删除这些功能,请参阅“降级注意事项”。

3

要降级副本集的 fCV

  1. 确保没有正在进行任何初始同步。 在初始同步进行时运行setFeatureCompatibilityVersion命令会导致初始同步重新启动。

  2. 确保所有节点的副本集配置中都没有newlyAdded字段。 在副本集中的每个节点上运行以下命令以验证这一点:

    use local
    db.system.replset.find( { "members.newlyAdded" : { $exists : true } } );

    newlyAdded字段仅在初始同步期间和初始同步后不久出现在节点的副本集配置文档中。

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

  4. 使用 mongosh连接到主节点。

  5. featureCompatibilityVersion 降级为 "5.0"

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

    setFeatureCompatibilityVersion命令对内部系统collection执行写入,并且是幂等的。如果该命令未成功完成,请在主节点上重试该命令。

  6. 要确保副本集的所有节点都有更新的featureCompatibilityVersion ,请连接到每个副本集节点并检查featureCompatibilityVersion

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

    所有成员均应返回包含以下内容的结果:

    "featureCompatibilityVersion" : { "version" : "5.0" }

    如果任何成员返回"6.0"featureCompatibilityVersion ,请等待该成员返回版本"5.0" ,然后再继续。

有关返回的featureCompatibilityVersion值的详细信息,请参阅获取 FeatureCompatibilityVersion。

警告

在继续执行降级过程之前,请确保所有副本集节点(包括延迟的副本集节点)都有先决条件更改。 为此,请在降级之前检查featureCompatibilityVersion并删除每个节点的不兼容功能。

1

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

重要

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

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

2

确保 5.0 二进制文件位于系统路径中。要确认二进制版本,请运行以下命令:

mongod --version

命令输出应会显示 5.0 系列版本。

3

降级副本集的每个从节点,一次一个:

  1. 关闭节点。

    要关闭mongod进程,请使用mongosh连接到从节点并运行以下命令:

    db.adminCommand( { shutdown: 1 } )
  2. 重新启动成员。

    要启动 mongod 进程,请运行以下命令:

    mongod --dbpath </path-to-data-folder>

    如需了解有关启动 mongod 进程的更多信息,请参阅“启动 mongod 进程”。

  3. 等待成员进入SECONDARY状态。

    在降级下一个从节点之前,请等待该成员恢复到SECONDARY状态。要检查成员的状态,请使用 mongosh 中的rs.status()方法

  4. 当成员处于SECONDARY阶段后,降级下一个从节点。

4

如果副本集不包含仲裁节点,请跳过此步骤。

降级副本集的仲裁节点

  1. 关闭节点。

    要关闭仲裁节点,请使用mongosh连接到仲裁节点并运行以下命令:

    db.adminCommand( { shutdown: 1 } )
  2. 删除仲裁节点数据目录的内容。

    要查找仲裁节点mongod的数据目录,请检查storage.dbPath配置设置或--dbpath命令行选项。

    运行以下命令:

    rm -rf /path/to/mongodb/datafiles/*
  3. 重新启动仲裁节点。

    要启动 mongod 进程,请运行以下命令:

    mongod --dbpath </path-to-mongodb-datafiles>

    如需了解有关启动 mongod 进程的更多信息,请参阅“启动 mongod 进程”。

  4. 等待成员进入ARBITER状态。

    在将主节点降级之前,请等待该成员恢复到ARBITER状态。 要检查成员的状态,请使用 mongosh 中的rs.status()方法

5
  1. 从主节点降级。

    mongosh中,使用rs.stepDown()退出主节点并强制执行正常的故障转移过程。

    rs.stepDown()
  2. 验证主节点是否已降级。

    运行以下命令:

    rs.status()

    验证主节点是否已降级以及其他节点是否已进入PRIMARY状态。

  3. 替换并重新启动以前的主mongod

    1. 关闭节点。

      要关闭主节点,请使用mongosh连接到主节点并运行以下命令:

      db.adminCommand( { shutdown: 1 } )
    2. 使用5.0二进制文件重新启动mongod

      要启动 mongod 进程,请运行以下命令:

      mongod --dbpath </path-to-mongodb-datafiles>

      如需了解有关启动 mongod 进程的更多信息,请参阅“启动 mongod 进程”。

后退

独立运行的实例