参考 > 发行说明 > MongoDB 3.4发布说明 > 将MongoDB 3.4降级到3.2 > 将3.4分片集群降级到3.2
在尝试任何降级之前,请熟悉本文档的内容。
一旦升级到3.4,就不能降级到3.2.7或更早的版本。您只能降级到3.2.8或更高版本。
可选,但推荐。 创建数据库的备份。
在降级二进制文件之前,您必须降级功能部件兼容性版本并删除与3.2或更早版本不兼容的所有3.4功能部件,如下所述。只有featureCompatibilityVersion
将设置为时,才需要执行这些步骤
"3.4"
。
如果定义了任何视图,请先删除视图,然后再将MongoDB 3.4降级到3.2。
要查找视图,可以在mongo
外壳程序中运行以下命令:
在每个包含视图的数据库中,删除system.views
集合以删除该数据库中的所有视图。
如果使用访问控制运行,则必须具有删除system.views
数据库集合的特权
。请参阅
创建角色以删除system.views跨数据库集合。
如果您为集合或索引定义了任何非“简单”排序规则,请先删除该集合或索引,然后再将MongoDB 3.4降级至3.2。
转换任何十进制类型的数据。在3.4之前的MongoDB版本中,对包含十进制类型的文档的操作可能会失败。有关某些可能的转换选项,请参见 模型货币数据。
要检测十进制的存在,可以db.collection.validate(true)
对可能包含十进制数据的集合运行
。
db.collection.validate(true)
在十进制数据报告,只有当featureCompatibilityVersion
是
"3.2"
。
如果您有索引(即在MongoDB 3.4中创建的索引的默认版本if ),请
在降级MongoDB之前重新创建集合上的所有索引。v: 2
featureCompatibilityVersion: "3.4"
reindex the collection
v: 1
您必须在分片和配置服务器上都执行此操作:
要使用查找索引,可以在shell中运行以下命令
:v: 2
mongo
如果分片是副本集,请在分片的每个成员上重复此过程,因为重新索引操作不会传播到辅助节点。
小费
如果将mongo
外壳连接到辅助构件,请设置
rs.slaveOk()
。
在配置服务器副本集的每个成员上重复该过程。
在降级过程中,您无法更改集合元数据。例如,降级过程中,千万 不能做任何以下内容:
sh.enableSharding()
sh.shardCollection()
sh.addShard()
db.createCollection()
db.collection.drop()
db.dropDatabase()
使用软件包管理器或手动下载,可获得3.2系列的最新版本。如果使用程序包管理器,请为3.2二进制文件添加新的存储库,然后执行实际的降级过程。
一旦升级到3.4,就不能降级到3.2.7或更早的版本。您只能降级到3.2.8或更高版本。
mongos
实例。¶降级二进制文件并重新启动。
一次降级碎片。如果这些分片是副本集,则对于每个分片:
一次降级 副本集的二级成员:
关闭mongod
实例并将3.4二进制文件替换为3.2二进制文件。
使用--shardsvr
和
--port
命令行选项启动3.2二进制文件。
如果使用配置文件,则将文件更新为包括和并开始:sharding.clusterRole: shardsvr
net.port
包括适合您的部署的任何其他配置。
等待成员恢复SECONDARY
状态,然后再降级下一个辅助成员。要检查成员的状态,可以rs.status()
在
mongo
shell中发出。
对每个次要成员重复上述步骤。
降级主副本集。
将mongo
外壳连接到主要数据库,并用于
rs.stepDown()
降低主要数据库并强制选择新的主要数据库:
当rs.status()
显示主要节点已卸任且另一个成员已PRIMARY
处于状态时,请降级已减少的主要节点:
关闭逐步降低的主数据库,然后将mongod
二进制文件替换
为3.2二进制文件。
使用--shardsvr
和
--port
命令行选项启动3.2二进制文件。
或者,如果使用配置文件,更新文件来指定,并与启动3.2二进制文件:sharding.clusterRole: shardsvr
net.port
包括适合您的部署的任何其他配置。
如果配置服务器是副本集:
一次降级 副本集的二级成员:
关闭辅助mongod
实例,然后用3.2二进制文件替换3.4二进制文件。
使用--configsvr
和
--port
选项启动3.2二进制文件:
如果使用配置文件,更新文件来指定,并与启动3.4二进制文件:sharding.clusterRole: configsvr
net.port
包括适合您的部署的任何其他配置。
等待成员恢复SECONDARY
状态,然后再降级下一个辅助成员。要检查成员的状态,请rs.status()
在mongo
shell中发出。
对每个次要成员重复上述步骤。
降级主副本集。
将mongo
外壳连接到主要数据库,并用于
rs.stepDown()
降低主要数据库并强制选择新的主要数据库:
当rs.status()
显示主节点已降级并且另一个成员已PRIMARY
进入状态时,请关闭已降级的主mongod
节点,然后用3.2二进制文件替换二进制文件。
使用--configsvr
和
--port
选项启动3.2二进制文件:
如果使用配置文件,更新文件来指定,并与启动3.4二进制文件:sharding.clusterRole: configsvr
net.port
包括适合您的部署的任何其他配置。