如何升级或降级 MongoDB

如何升级或降级 MongoDB

我有一个相当古老的 Web 应用程序设置,它依赖于在 Debian 8.5 的服务器上运行的 MongoDB。不幸的是,MongoDB 最近在服务器上升级,应用程序崩溃了。 MongoDB 升级到版本 2.4.10,启动时出现此错误

    need to upgrade database admin with pdfile version 4.22, new version: 4.5

当我尝试运行升级管理数据库时,我得到

    error: exception cloning object in admin.system.users system.users entry must have either a 'pwd' or a 'userSource' field, but not both

基本上我无法升级数据库。我已经尝试修复数据库,但也不起作用。看来问题可能是由于数据库中存在重复的用户引起的。一种可能的解决方案是删除重复项,但由于 mongod 不会运行,我不确定如何做到这一点。

我尝试通过 apt 降级 mongodb,但无法找到 apt 识别的版本。例如

 sudo apt-get install mongodb=2.2.7

产量

    E: version '2.2.7' for 'mongodb' was not found

经过谷歌搜索后,似乎 mongodb 2.6 可能没有同样的问题,不幸的是我无法安装比当前 2.4.10 更新的任何东西。我已经运行了 apt-get update,但 apt-cache 策略显示候选版本与已安装的版本相同。

基本上,我可以通过三种方式让这个网站重新启动并运行。

  • 成功升级管理数据库,使其与最近安装的 MongoDB 版本配合使用。
  • 将 MongoDB 降级到 2.2.7
  • 将 MongoDB 升级到 2.6.x

有人知道我怎样才能让这些事情发生吗?

答案1

我强烈建议使用比 2.2 或 2.4 更新的版本 - 它们在 MongoDB 术语中很古老,并且很久以前就停止接收更新了。您找不到要安装的较新版本的原因是官方 Debian 软件包锁定了整个操作系统版本的主要版本。不幸的是,Debian OS 版本滞后于 MongoDB 主要版本很多,即使 Debian 版本发布,它们也并不总是采用可用的最新版本。

要获得更现代版本的 MongoDB,您需要使用官方 MongoDB 存储库 - 这是2.6版本在这一点上它本身已经很老了。你仍然可以固定版本不过,这样您就可以控制升级内容和升级方式,这是一个不错的选择。您还可以在以下位置获取较旧的 2.2 版本类似的方式

要修复管理数据库错误,您有 3 个选项(简而言之):

  1. 降级到 2.2.X(见上文)并删除重复条目,然后重新升级
  2. 升级到 2.6+,看看是否可以解决您的问题
  3. (暂时)禁用身份验证启动 MongoDB,看看是否可以删除管理数据库中的重复条目,然后正常重新启动

相关内容