1

我有一个在 mongo 2.4.8 上运行的 mongodb 生产数据库,我想升级到 2.6.x。

我们想要这样做的方法是首先将数据加载到另一个运行 2.6.3 的服务器,使用mongorestore. 但是,在运行mongorestore命令时,我们会收到以下错误:

Cannot restore users with schema version 1 to a system with server version 2.5.4 or greater

我找不到与此问题相关的任何内容,也不知道该怎么做。万一这很重要,数据库本身不是使用 mongo 2.4.x 从头开始​​创建的,而是使用以前的版本创建的。

我该怎么办?除了使用 mongorestore 之外,还有其他方法吗?

预先感谢您的帮助 ...

4

2 回答 2

5

您可以采用两种方法来使用 2.4 升级您的用户架构mongodump

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

这遵循正常的2.6 升级路径。不要尝试将mongorestore您的 2.4 备份直接到 2.6,而是还原到 2.4 实例,然后升级到 2.6。

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

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

这种方法需要 MongoDB 2.4 版本的 mongorestore

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

  • mongorestore使用 2.4 版本的备份mongorestore

  • 在 2.6 shell中运行authSchemaUpgrade命令:mongo

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

于 2014-08-12T20:45:32.647 回答
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)上运行,您可以对数据库文件进行快照,恢复到新文件系统并使用 2.6 启动新的 mongod 进程。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/

于 2014-08-07T21:07:22.417 回答