我有一个在mongo 2.4.8上运行的mongodb生产数据库,我想升级到2.6.x.
我们想要这样做的方法是首先使用mongorestore
将数据加载到另一台运行2.6.3的服务器上。但是,在运行mongorestore
命令时,我们收到以下错误:
Cannot restore users with schema version 1 to a system with server version 2.5.4 or greater
我找不到与此问题相关的任何内容,也不知道该怎么做。如果重要,数据库本身不是从头开始使用mongo 2.4.x创建的,而是使用以前的版本。
我做什么?除了使用mongorestore之外,还有其他方法吗?
提前感谢您的帮助......
答案 0 :(得分:5)
使用2.4 mongodump
升级用户架构有两种方法。
这遵循正常2.6 upgrade path。而不是试图将2.4备份mongorestore
直接转换为2.6,而是恢复到2.4实例,然后升级到2.6。
建议在升级之前,通过2.6 mongo
shell运行db.upgradeCheckAllDBs()。这将检查由于MongoDB 2.6中的更改而导致的任何潜在compatibility issues。例如,2.6实现了更强的索引字段定义和密钥长度限制的实施。
mongorestore
恢复到MongoDB 2.6,然后升级用户架构此方法需要MongoDB 2.4版本的mongorestore
启动MongoDB 2.6 mongod
而不启用身份验证
mongorestore
mongorestore
您的备份
在您的2.6 mongo
shell中运行authSchemaUpgrade
command:
db.adminCommand({authSchemaUpgrade: 1 });
重启您的2.6 mongod
并启用身份验证
答案 1 :(得分:1)
我能想到的三种方法:
首先,如果您作为副本集运行,我会升级成员 逐一。如果你没有以副本集的形式运行,那会很糟糕 MongoDB实际上并非设计用于单一的生产用途 实例。有关转换为副本集和滚动的详细信息 升级到这里: http://docs.mongodb.org/manual/release-notes/2.6-upgrade/并在此处: http://docs.mongodb.org/v2.6/tutorial/convert-standalone-to-replica-set/#
其次,如果您在支持快照的文件系统上运行 (如Amazon EBS或Linux LVM)您可以对数据库文件进行快照, 恢复到新的文件系统并使用启动新的mongod进程 2.6。 http://docs.mongodb.org/manual/tutorial/backup-with-filesystem-snapshots/
第三,尝试通过mongoexport导出数据并通过它加载 mongoimport。它与mongodump / mongorestore不同,所以它有 一些限制(它不是数据库的完整备份,只是一个 收集的文本转储)但可能会帮助您解决此问题 与mongorestore:http://docs.mongodb.org/v2.6/core/import-export/