MongoDB 恢复失败

标签 mongodb mongorestore

我正在尝试从 Ubuntu 14.04.2 中的转储恢复 mongodb 数据库,该转储是在 MongoDB shell 版本:2.4.13 上创建的,我正在 MongoDB shell 版本:3.0.1 上恢复。

这是我正在运行的命令和我收到的错误。

mongorestore/home/somename/backups/staging/mongo

2015-04-01T12:12:32.886+0200 构建要从/home/somename/backups/staging/mongo 目录恢复的数据库和集合列表

2015-04-01T12:12:32.896+0200 假设转储目录中的用户来自 <= 2.4(身份验证版本 1)

2015-04-01T12:12:32.896+0200 失败:转储中的用户和角色集合的身份验证版本与目标服务器不兼容:无法将身份验证版本 1 的用户恢复到身份验证版本 5 的服务器

有办法解决这个问题吗?

任何帮助将不胜感激

最佳答案

您可以通过将 admin 目录移出转储文件夹,然后重新运行 mongorestore 命令来解决此问题。

例如,如果你跑了

mongorestore --dir ~/path/to/mongodumpdir

并且失败了,那么很可能您那里有一个 admin 文件夹。您可以将其移出,然后重新运行上面的命令。

我相信,特别是 system.users.bson 导致了问题。由于 mongo 2.x.x3.x.x 添加和存储用户的方式不同。

当然,旧 mongodb 中的用户在新数据库中不可用,但您始终可以手动将它们添加回来。

关于MongoDB 恢复失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29388381/

相关文章:

mongodb - 为什么 mongorestore 恢复索引?

mongodb mongorestore 断言失败

mongodb - 使用 mongorestore 将数据库恢复到启用 --auth 的 MongoDB (3.4),SASL 错误

mongodb - 如何根据带有整数键的嵌套数组中的值查找文档?

mongodb - 使用 mongodump 和 mongorestore 后数据丢失?

java - 按天分组并获取 MongoDB 中时区的最近 7 天数据

MongoDB,mongorestore : "Can only replay oplog on full restore"

mongodb - 是否可以通过 gradle (Kotlin-DSL) 为 Kotlin MongoDB 文档生成 Q 类?

MongoDB 平衡节点之间的连接

MongoDB mongorestore 失败:locale::facet::_S_create_c_locale 名称无效