mongorestore问题:无法将具有架构版本1的用户还原到服务器版本为2.5.4或更高版本的系统

时间:2014-08-07 11:49:39

标签: mongodb migration mongorestore

我有一个在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之外,还有其他方法吗?

提前感谢您的帮助......

2 个答案:

答案 0 :(得分:5)

使用2.4 mongodump升级用户架构有两种方法。

1)恢复到MongoDB 2.4,然后升级到2.6

这遵循正常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实现了更强的索引字段定义和密钥长度限制的实施。

2)使用2.4 mongorestore恢复到MongoDB 2.6,然后升级用户架构

此方法需要MongoDB 2.4版本的mongorestore

  • 启动MongoDB 2.6 mongod 而不启用身份验证

  • 使用2.4版mongorestore

  • mongorestore您的备份

  • 在您的2.6 mongo shell中运行authSchemaUpgrade command

    db.adminCommand({authSchemaUpgrade: 1 });
    
  • 重启您的2.6 mongod并启用身份验证

答案 1 :(得分: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/#

  2. 其次,如果您在支持快照的文件系统上运行 (如Amazon EBS或Linux LVM)您可以对数据库文件进行快照, 恢复到新的文件系统并使用启动新的mongod进程 2.6。 http://docs.mongodb.org/manual/tutorial/backup-with-filesystem-snapshots/

  3. 第三,尝试通过mongoexport导出数据并通过它加载 mongoimport。它与mongodump / mongorestore不同,所以它有 一些限制(它不是数据库的完整备份,只是一个 收集的文本转储)但可能会帮助您解决此问题 与mongorestore:http://docs.mongodb.org/v2.6/core/import-export/