参考 > 发行说明 > MongoDB 2.6发行说明 > 从2.6降级MongoDB
在尝试任何降级之前,请熟悉本文档的内容,尤其是《降级建议和清单》 以及降级群集的过程。
降级时,请考虑以下因素:
升级到MongoDB 2.6后,您将无法降级到MongoDB 2.4之前的任何版本。如果您在
运行2.6时创建text
或创建2dsphere
索引,则只能降级到MongoDB 2.4.10或更高版本。
如果已升级到2.6用户授权模型,则必须先将用户授权模型降级为2.4,然后再将MongoDB 2.6降级为2.4。
admin.system.backup_users
和
admin.system.new_users
在升级过程中创建的集合。要降级授权模型,必须以具有以下特权的用户身份进行连接:
如果不存在具有适当特权的用户,请创建一个授权模型降级用户:
使用进行用户连接并进行身份验证
userAdminAnyDatabase
。
使用该db.createRole
方法,创建具有所需特权的
角色。
以下降级过程要求<database>.system.users
使用版本2.4中的集合。对于非admin
数据库完整无缺。
admin.system.users
集合的备份。¶将admin.system.users
集合中的所有文档复制到admin.system.new_users
集合中:
authSchema
。¶该方法返回具有WriteResult
操作状态的对象。成功更新后,WriteResult
对象应"nModified"
等于1
。
admin.system.users
集合中删除现有文档。¶该方法返回一个WriteResult
对象,该对象具有在该"nRemoved"
字段中删除的文档数。
admin.system.backup_users
集合中的文档。¶将admin.system.backup_users
2.6升级期间创建的的所有文档复制到admin.system.users
。
authSchema
。¶对于分片群集,通过连接到每个分片的主副本集成员来重复降级过程。
注意
集群mongos
实例将无法检测到授权模型降级,直到刷新用户缓存为止。您可以invalidateUserCache
在每个mongos
实例上运行以立即刷新,也可以等到缓存在末尾自动刷新。要运行
,您必须具有操作特权,该特权
由和角色授予
。user cache
invalidation interval
invalidateUserCache
invalidateUserCache
userAdminAnyDatabase
hostManager
降级过程将用户数据返回到升级到2.6授权模型之前的状态。使用2.6用户模型对用户/角色数据所做的任何更改都将丢失。
如果您具有版本2文本索引(即MongoDB 2.6中文本索引的默认版本),请在降级MongoDB之前删除版本2文本索引。降级后,启用文本搜索并重新创建删除的文本索引。
要确定text
索引的版本,请运行
db.collection.getIndexes()
以查看索引规格。对于文本索引,该方法在字段中返回版本信息
textIndexVersion
。例如,以下显示
text
了quotes
集合上的索引是版本2。
2dsphere
索引版本检查¶如果您具有版本2 2dsphere
索引(即2dsphere
MongoDB 2.6中索引的默认版本),请在降级MongoDB之前删除版本2
2dsphere
索引。降级后,重新创建2dsphere
索引。
要确定2dsphere
索引的版本,请运行
db.collection.getIndexes()
以查看索引规格。对于
2dsphere
索引,该方法在字段中返回版本信息
2dsphereIndexVersion
。例如,以下显示
2dsphere
了locations
集合上的索引是版本2。
mongod
实例¶以下步骤概述了将独立mongod
版本从2.6 降级
到2.4的过程。
mongod
实例。将现有的二进制文件替换为2.4 mongod
二进制文件,然后重新启动
mongod
。以下步骤概述了副本集的“滚动”降级过程。“滚动”降级过程通过在其他成员可用时分别对成员进行降级来最大程度地减少停机时间:
mongod
。¶当rs.status()
显示主节点已退出并且另一个成员已PRIMARY
进入状态时,请关闭先前的主节点,并用mongod
2.4二进制文件替换二进制文件并启动新实例。
副本集故障转移不是即时的,但将导致该集不可用于写入和中断读取,直到故障转移过程完成为止。通常,这需要10秒钟或更长时间。您可能希望在预定的维护时段内计划降级。
在降级过程中,您无法更改集合元数据。例如,降级过程中,千万 不能做任何以下内容:
sh.enableSharding()
sh.shardCollection()
sh.addShard()
db.createCollection()
db.collection.drop()
db.dropDatabase()
分片群集的降级过程将逆转升级过程的顺序。
mongod
次级之前降级的主。replSetStepDown
并降级。mongod
配置服务器实例,在参数中将第一个系统降级为last。mongos --configdb
mongos
。降级过程是二进制的直接替代。升级到MongoDB 2.6后,您将无法降级到MongoDB 2.4之前的任何版本。如果有text
或2dsphere
索引,则只能降级到MongoDB 2.4.10或更高版本。
除非本页中有描述,否则在2.4和2.6之间移动是一种直接替代:
mongod
实例。¶例如,在Linux上,mongod
使用以下
--shutdown
选项运行2.6 :
/var/mongod/data
用您的MongoDB 替换dbPath
。另请参见Stop mongod进程,以了解停止mongod
实例的替代方法。