将 6.0 副本集降级至 5.0
尝试降级之前,请先熟悉本页面的内容。
降级路径
重要
升级或降级副本集之前,请确保所有副本集节点都正在运行。否则,升级或降级操作将在所有节点启动后才会完成。
如果需要从 6.0 降级,请降级到最新的 5.0 补丁版本。
MongoDB 仅支持单版本降级。您无法降级到比当前版本落后多个版本的版本。
例如,您可以将 6.0 系列部署降级为 5.0 系列部署。但是,不支持将 5.0 系列部署进一步降级为 4.4 系列部署。
访问控制
如果副本集启用了访问控制,则降级用户权限必须包括跨数据库列出和管理索引的权限。具有 root
角色的用户拥有所需的权限。
先决条件
在开始降级程序之前,必须完成以下先决条件步骤。
创建备份
可选但推荐使用。创建数据库备份。
要了解如何创建备份,请参阅自托管部署的备份方法。
删除向后不兼容的功能
如需从 6.0 降级到 5.0,必须删除与 5.0 不兼容的 6.0 功能。有关不兼容功能的列表以及如何删除这些功能,请参阅“降级注意事项”。
降级功能兼容版本(fCV)
要降级副本集的 fCV :
确保没有正在进行任何初始同步。 在初始同步进行时运行
setFeatureCompatibilityVersion
命令会导致初始同步重新启动。确保所有节点的副本集配置中都没有
newlyAdded
字段。 在副本集中的每个节点上运行以下命令以验证这一点:use local db.system.replset.find( { "members.newlyAdded" : { $exists : true } } ); newlyAdded
字段仅在初始同步期间和初始同步后不久出现在节点的副本集配置文档中。确保没有副本集成员处于
ROLLBACK
或RECOVERING
状态。使用
mongosh
连接到主节点。将
featureCompatibilityVersion
降级为"5.0"
。db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } ) setFeatureCompatibilityVersion
命令对内部系统collection执行写入,并且是幂等的。如果该命令未成功完成,请在主节点上重试该命令。要确保副本集的所有节点都有更新的
featureCompatibilityVersion
,请连接到每个副本集节点并检查featureCompatibilityVersion
:db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } ) 所有成员均应返回包含以下内容的结果:
"featureCompatibilityVersion" : { "version" : "5.0" } 如果任何成员返回
"6.0"
的featureCompatibilityVersion
,请等待该成员返回版本"5.0"
,然后再继续。
有关返回的featureCompatibilityVersion
值的详细信息,请参阅获取 FeatureCompatibilityVersion。
降级程序
警告
在继续执行降级过程之前,请确保所有副本集节点(包括延迟的副本集节点)都有先决条件更改。 为此,请在降级之前检查featureCompatibilityVersion
并删除每个节点的不兼容功能。
降级副本集的从节点。
降级副本集的每个从节点,一次一个:
关闭节点。
要关闭
mongod
进程,请使用mongosh
连接到从节点并运行以下命令:db.adminCommand( { shutdown: 1 } ) 重新启动成员。
要启动
mongod
进程,请运行以下命令:mongod --dbpath </path-to-data-folder> 如需了解有关启动
mongod
进程的更多信息,请参阅“启动mongod
进程”。等待成员进入
SECONDARY
状态。在降级下一个从节点之前,请等待该成员恢复到
SECONDARY
状态。要检查成员的状态,请使用mongosh
中的rs.status()
方法当成员处于
SECONDARY
阶段后,降级下一个从节点。
将仲裁节点副本集节点降级(如果有)。
如果副本集不包含仲裁节点,请跳过此步骤。
降级副本集的仲裁节点:
关闭节点。
要关闭仲裁节点,请使用
mongosh
连接到仲裁节点并运行以下命令:db.adminCommand( { shutdown: 1 } ) 删除仲裁节点数据目录的内容。
要查找仲裁节点
mongod
的数据目录,请检查storage.dbPath
配置设置或--dbpath
命令行选项。运行以下命令:
rm -rf /path/to/mongodb/datafiles/* 重新启动仲裁节点。
要启动
mongod
进程,请运行以下命令:mongod --dbpath </path-to-mongodb-datafiles> 如需了解有关启动
mongod
进程的更多信息,请参阅“启动mongod
进程”。等待成员进入
ARBITER
状态。在将主节点降级之前,请等待该成员恢复到
ARBITER
状态。 要检查成员的状态,请使用mongosh
中的rs.status()
方法
降级主节点。
从主节点降级。
在
mongosh
中,使用rs.stepDown()
退出主节点并强制执行正常的故障转移过程。rs.stepDown() 验证主节点是否已降级。
运行以下命令:
rs.status() 验证主节点是否已降级以及其他节点是否已进入
PRIMARY
状态。替换并重新启动以前的主
mongod
。关闭节点。
要关闭主节点,请使用
mongosh
连接到主节点并运行以下命令:db.adminCommand( { shutdown: 1 } ) 使用5.0二进制文件重新启动
mongod
。要启动
mongod
进程,请运行以下命令:mongod --dbpath </path-to-mongodb-datafiles> 如需了解有关启动
mongod
进程的更多信息,请参阅“启动mongod
进程”。