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

Mongodb mongorestore问题:无法将架构版本为1的用户还原到服务器版本为2.5.4或更高版本的系统,mongodb,migration,mongorestore,Mongodb,Migration,Mongorestore,我有一个在Mongo2.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 我找不到任何与这个问题相关的东西,也不知道该怎么办。如果有必要,数

我有一个在Mongo2.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
我找不到任何与这个问题相关的东西,也不知道该怎么办。如果有必要,数据库本身不是用Mongo2.4.x从头开始创建的,而是用以前的版本创建的

我能做什么?除了使用mongorestore,还有其他方法吗


提前感谢您的帮助…

我可以想到三种方法:

  • 首先,如果您作为副本集运行,我会升级成员 逐一地。如果您不是以副本集的形式运行,这很糟糕, MongoDB并不是专门为生产使用而设计的 例如。有关转换为副本集并以滚动方式转换的详细信息 在此处升级: 在这里:

  • 其次,如果您在支持快照的文件系统上运行 (如Amazon EBS或Linux LVM)您可以快照数据库文件, 使用恢复到新的文件系统并启动新的mongod进程 2.6.

  • 第三,尝试通过mongoexport导出数据并通过 mongoimport。它与mongodump/mongorestore不同,因此 一些限制(它不是数据库的完整备份,只是 集合的文本转储),但可能会帮助您克服此问题 与mongorestore合作:


  • 我可以想到三种方法:

  • 首先,如果您作为副本集运行,我会升级成员 逐一地。如果您不是以副本集的形式运行,这很糟糕, MongoDB并不是专门为生产使用而设计的 例如。有关转换为副本集并以滚动方式转换的详细信息 在此处升级: 在这里:

  • 其次,如果您在支持快照的文件系统上运行 (如Amazon EBS或Linux LVM)您可以快照数据库文件, 使用恢复到新的文件系统并启动新的mongod进程 2.6.

  • 第三,尝试通过mongoexport导出数据并通过 mongoimport。它与mongodump/mongorestore不同,因此 一些限制(它不是数据库的完整备份,只是 集合的文本转储),但可能会帮助您克服此问题 与mongorestore合作:


  • 使用2.4
    mongodump
    升级用户模式有两种方法

    1) 恢复到MongoDB 2.4,然后升级到2.6 这是正常的。与其尝试
    mongorestore
    将2.4备份直接升级到2.6,不如将其还原到2.4实例,然后升级到2.6

    建议在升级之前,通过2.6
    mongo
    shell运行。这将检查由于MongoDB 2.6中的更改而导致的任何潜在问题。例如,2.6实现了更强的索引字段定义和键长度限制的强制执行

    2) 使用2.4
    mongorestore
    还原到MongoDB 2.6,然后升级用户架构 这种方法需要MongoDB 2.4版本的
    mongorestore

    • 在未启用身份验证的情况下启动MongoDB 2.6
      mongod

    • mongorestore
      使用2.4版的
      mongorestore

    • 在2.6
      mongo
      shell中运行:

      db.adminCommand({authSchemaUpgrade: 1 });
      
    • 在启用身份验证的情况下重新启动2.6
      mongod


    使用2.4
    mongodump
    升级用户模式有两种方法

    1) 恢复到MongoDB 2.4,然后升级到2.6 这是正常的。与其尝试
    mongorestore
    将2.4备份直接升级到2.6,不如将其还原到2.4实例,然后升级到2.6

    建议在升级之前,通过2.6
    mongo
    shell运行。这将检查由于MongoDB 2.6中的更改而导致的任何潜在问题。例如,2.6实现了更强的索引字段定义和键长度限制的强制执行

    2) 使用2.4
    mongorestore
    还原到MongoDB 2.6,然后升级用户架构 这种方法需要MongoDB 2.4版本的
    mongorestore

    • 在未启用身份验证的情况下启动MongoDB 2.6
      mongod

    • mongorestore
      使用2.4版的
      mongorestore

    • 在2.6
      mongo
      shell中运行:

      db.adminCommand({authSchemaUpgrade: 1 });
      
    • 在启用身份验证的情况下重新启动2.6
      mongod


    您知道用于创建数据库的版本吗?你知道升级到2.4的步骤是什么吗?我建议您阅读网站链接部分中的。您知道创建数据库使用的版本吗?你知道升级到2.4的步骤是什么吗?我建议您阅读本网站链接部分的内容。您好,谢谢您的回答。我已经在使用副本集了。我知道,一个接一个地升级成员非常有效。我这里的问题是数据本身。我不想在太晚的时候发现问题。这就是我想在其他地方重新加载数据的原因。我知道如何导出数据,并且已经有一个mongodump存档。仅供参考:
    mongoexport
    对于数据库备份/恢复不是一个推荐的选项,因为它不能可靠地捕获类型信息,不包括索引定义,并且在收集级别上运行。滚动升级确实是常见的方法,但滚动升级和ShapShot并没有回答如何将具有v1用户模式的2.4
    mongodump
    加载到需要v2模式的2.6服务器中的原始问题;-)。嗨,谢谢你的回答。我已经在使用副本集了。我知道,一个接一个地升级成员非常有效。我的问题是