参考 > 发行说明 > MongoDB 3.6发布说明 > 将3.6分片适合降级到3.4
在尝试任何降级之前,请熟悉本文档的内容。
升级到3.6后,如果需要降级,建议将其降级到3.4的最新修补程序版本。
可选,但推荐。 创建数据库的备份。
在降级过程中,您无法更改集合元数据。例如,降级过程中,千万 不能做任何以下内容:
sh.enableSharding()sh.shardCollection()sh.addShard()db.createCollection()db.collection.drop()db.dropDatabase()在降级二进制文件之前,您必须降级功能部件兼容版本并删除与以下概述的3.4或更早版本不兼容的所有3.6功能部件。只有featureCompatibilityVersion将设置为时,才需要执行这些步骤
"3.6"。
降级featureCompatibilityVersion到"3.4"。
该setFeatureCompatibilityVersion命令执行对内部系统集合的写操作,并且是幂等的。如果由于某种原因该命令未成功完成,请在mongos实例上重试该命令
。
为了确保分片群集的所有成员都反映更新的内容
featureCompatibilityVersion,请连接到每个分片副本集成员和每个配置服务器副本集成员,然后检查
featureCompatibilityVersion:
小费
对于已启用访问控制的分片群集,要对分片副本集成员运行以下命令,您必须以分片本地用户身份连接到该成员。
所有成员应返回的结果包括:
如果有任何成员返回featureCompatibilityVersion包含version值"3.6"或targetVersion字段的,请"3.4"在继续操作之前等待该成员反映版本。
有关返回featureCompatibilityVersion
值的更多信息,请参见View FeatureCompatibilityVersion。
删除所有与3.4 不兼容的持久功能。例如,如果您定义了使用3.6查询功能(例如$jsonSchema或)的
任何视图定义,文档验证器和部分索引过滤器,则$expr必须将其删除。
警告
在继续进行降级过程之前,请确保所有成员(包括分片群集中的延迟副本集成员)均反映出先决条件更改。也就是说,featureCompatibilityVersion在降级之前,请检查每个节点的
和并删除不兼容的功能。
使用软件包管理器或手动下载,可获得3.4系列的最新版本。如果使用程序包管理器,请为3.4二进制文件添加新的存储库,然后执行实际的降级过程。
升级到3.6后,如果需要降级,建议将其降级到3.4的最新修补程序版本。
mongos实例。¶降级二进制文件并重新启动。
一次降级碎片。如果这些分片是副本集,则对于每个分片:
一次降级 副本集的二级成员:
注意
如果不执行干净关闭,则可能会导致错误,从而导致该mongod过程无法启动。
强制终止该mongod过程可能会导致结果不准确,db.collection.count()并且
会导致db.stats()下次mongod重新启动该过程时启动时间延长。
无论您尝试mongod通过命令行kill或类似方式从命令行终止
进程,还是使用平台的初始化系统发出stop命令(如或),都适用
。sudo systemctl stop mongodsudo service mongod stop
将3.6二进制文件替换为3.4二进制文件。
使用--shardsvr和
--port命令行选项启动3.4二进制文件。包括适合您的部署的任何其他配置,例如
--bind_ip。
或者,如果使用配置文件,更新文件包括,和任何其他配置,适合您的部署,如
,并启动:sharding.clusterRole: shardsvrnet.portnet.bindIp
等待成员恢复SECONDARY状态,然后再降级下一个辅助成员。要检查成员的状态,可以rs.status()在
mongoshell中发出。
对每个次要成员重复上述步骤。
降级主副本集。
将mongo外壳连接到主要数据库,并用于
rs.stepDown()降低主要数据库并强制选择新的主要数据库:
当rs.status()
显示主要节点已卸任且另一个成员已PRIMARY处于状态时,请降级已减少的主要节点:
关闭逐步降低的主数据库,然后将mongod二进制文件替换
为3.4二进制文件。
使用--shardsvr和
--port命令行选项启动3.4二进制文件。包括适合您的部署的任何其他配置,例如
--bind_ip。
或者,如果使用配置文件,请将其更新为包括,和适用于您的部署的任何其他配置,例如
,然后启动3.4二进制文件:sharding.clusterRole: shardsvrnet.portnet.bindIp
如果配置服务器是副本集:
一次降级 副本集的二级成员:
关闭辅助mongod实例,然后用3.4二进制文件替换3.6二进制文件。
使用--configsvr和
--port选项启动3.4二进制文件。包括适合您的部署的任何其他配置,例如
--bind_ip。
如果使用配置文件,请更新该文件以指定,和其他适用于您的部署的配置,例如
,并启动3.4二进制文件:sharding.clusterRole: configsvrnet.portnet.bindIp
包括适合您的部署的任何其他配置。
等待成员恢复SECONDARY状态,然后再降级下一个辅助成员。要检查成员的状态,请rs.status()在mongoshell中发出。
对每个次要成员重复上述步骤。
降级主副本集。
将mongo外壳连接到主要数据库,并用于
rs.stepDown()降低主要数据库并强制选择新的主要数据库:
当rs.status()显示主数据库已降级并且另一个成员已PRIMARY处于状态时,请关闭已降级的主数据库并将mongod二进制文件替换为3.4二进制文件。
使用--configsvr和
--port选项启动3.4二进制文件。包括适合您的部署的任何其他配置,例如
--bind_ip。
如果使用配置文件,请更新该文件以指定,和其他适用于您的部署的配置,例如
,并启动3.4二进制文件:sharding.clusterRole: configsvrnet.portnet.bindIp