Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs 菜单
Docs 主页
/ /

降级8.3 分片集群到8.0

重要

MongoDB 8.3 是最新的次要发布。从MongoDB 8.2 开始,针对特定使用案例的本地部署部署(社区和 EA)可使用次要版本。 有关更多信息,请参阅 MongoDB版本控制。

要安装支持本地部署使用的最新MongoDB版本,请参阅安装说明。

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

重要

在升级或降级分片集群之前,请确保所有分片集群成员都正在运行。 否则,升级或降级将在所有节点启动后才能完成。

如果您需要从8.3降级,请降级到8.0的最新补丁发布。

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

  • 对于任何版本,无论是主要版本还是次要版本,都可以升级或降级到其相邻的邻居。示例,您可以从 8.3 降级到 8.2,或从 7.0升级到 8.0。

  • 对于所有版本,无论是主要版本还是次要版本,您都可以降级到上一个主要版本。示例,从 8.3 到 8.0。

  • 对于任何次要版本,您都可以升级到立即的下一个版本。示例,从 8.2 到 8.3。

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

1

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

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

2

要从8.3 降级到8.0 ,您必须删除与8.3 8.0不兼容的 功能。有关不兼容功能的列表以及如何删除这些功能,请参阅降级注意事项。

4

要降级分片集群的 FCV

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

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

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

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

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

  4. 使用 mongosh连接到您的mongos实例。

  5. featureCompatibilityVersion 降级为 "8.0"

    重要

    在降级二进制版本之前,请确认您已删除所有向后不兼容的功能。在继续之前,请务必评估您的升级路径。

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

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

    注意

    故障排除

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

    提示

    访问控制

    对于已启用访问控制的分片集群,要在分片副本集成员上运行adminCommand ,您必须以分片本地用户身份连接到该成员。

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

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

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

警告

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

1

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

重要

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

如果您需要从8.3降级,请降级到8.0的最新补丁发布。

2

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

mongod --version

命令输出应显示 8.0发布。

3

要禁用负载均衡器,请将mongosh连接到分分片集群中的mongos实例,然后运行以下命令:

sh.stopBalancer()

注意

如果迁移正在进行,MongoDB 会在停止负载均衡器之前完成进行中的迁移。 要检查负载均衡器的当前状态,请运行sh.isBalancerRunning()

要验证负载均衡器是否已禁用,请运行以下命令:

sh.getBalancerState()

如果负载均衡器已禁用, sh.getBalancerState()将返回false

有关禁用负载均衡器的更多信息,请参阅禁用负载均衡器

4
  1. 要停止mongos ,请运行以下命令:

    db.shutdownServer()
  2. 使用 8.0 二进制文件重新启动 mongos

5
  1. 将分片的从节点降级,一次一个。

    1. 关闭节点。

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

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

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

      mongod --dbpath </path-to-data-folder>
    3. 等待成员进入SECONDARY状态。

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

    4. 重复前面的步骤以降级每个从节点。

  2. 降级分片仲裁节点(如果有)。

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

    将分片集群的仲裁节点降级:

    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>
    4. 等待成员进入ARBITER状态。

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

  3. 将分片主节点降级。

    1. 从主节点降级。

      mongosh中,使用rs.stepDown()降级主节点并开始新的主节点选举:

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

      运行以下命令:

      rs.status()

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

    3. 关闭前主节点。

      要关闭以前的主节点 (primary node in the replica set)节点,请使用mongosh连接到部署并运行以下命令:

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

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

      mongod --dbpath </path-to-mongodb-datafiles>
    5. 对剩余分片重复上述步骤。

6
  1. 逐个降级配置服务器副本集 (CSRS) 的分片的从节点:

    1. 关闭从节点。

      连接到从节点并运行以下命令:

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

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

      mongod --dbpath </path-to-data-folder>
    3. 等待成员进入SECONDARY状态。

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

    4. 重复前面的步骤以降级每个从节点。

  2. 将配置服务器主节点降级。

    1. 从主节点降级。

      mongosh中,运行rs.stepDown()降级主节点 (primary node in the replica set)并开始新的主节点 (primary node in the replica set)选举:

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

      运行以下命令:

      rs.status()

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

    3. 关闭前主节点。

      要关闭以前的主节点 (primary node in the replica set)节点,请使用mongosh连接到部署并运行以下命令:

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

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

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

降级所有分片集群组件后,请连接到mongos并运行以下命令以重新启用负载均衡器:

sh.startBalancer()

sh.startBalancer()方法还启用分片集群的自动分割。

后退

副本集(Replica Set)

在此页面上