Mac 上 MongoDB 社区版升级后无法启动

问题描述 投票:0回答:1

我最近尝试在 Mac 上升级 MongoDB 社区版,但完成升级后,MongoDB 无法启动。每次我尝试启动 MongoDB 服务时,它都会立即关闭,并且我无法连接到任何数据库。

错误消息: 当我检查 MongoDB 日志文件时,在触发关闭序列之前遇到以下错误消息:

{"t":{"$date":"2024-05-10T13:53:06.976+08:00"},"s":"I",  "c":"STORAGE",  "id":22317,   "ctx":"initandlisten","msg":"WiredTigerKVEngine shutting down"}
...
{"t":{"$date":"2024-05-10T13:53:07.024+08:00"},"s":"I",  "c":"CONTROL",  "id":23138,   "ctx":"initandlisten","msg":"Shutting down","attr":{"exitCode":62}}

此日志表明 MongoDB 服务器正在启动关闭,并显示

exitCode: 62
,这通常表示配置错误或数据库文件存在问题,导致 MongoDB 无法正常启动。

尝试解决

  • 我尝试重新启动 MongoDB 并重新启动我的 Mac。
  • 我检查了 MongoDB 配置是否有任何明显的错误。
  • 我从升级前的备份中恢复了 MongoDB 数据文件,怀疑新版本存在损坏或兼容性问题。

尽管做出了这些努力,问题仍然存在,导致 MongoDB 无法正常运行。我正在寻找有关如何解决此问题的指导或任何可能有助于诊断和修复问题的步骤,以便 MongoDB 可以在升级后在我的 Mac 上按预期运行。

其他背景

  • MongoDB从4.4版本升级到7.0。
  • 操作系统是 macOS Monterey。
mongodb
1个回答
0
投票

在 Mac 上升级 MongoDB 有时会因版本不兼容或配置问题而导致服务启动失败。本指南提供了解决这些问题的系统方法,确保 MongoDB 在升级后顺利运行。

背景知识

  • 安装方法:MongoDB 可以通过直接下载或通过 Homebrew 安装在 macOS 上。然而,使用 Homebrew 通常更简单且更易于管理。
  • 配置和数据存储:MongoDB配置通常存储在
    /usr/local/etc/mongod.conf
    中,数据存储在
    /usr/local/var/mongodb
    中。
  • 权限问题:使用
    sudo
    启动 MongoDB 可能会产生权限问题,因为它可能会将 MongoDB 文件的访问权限限制为仅 root 用户。使用正确的用户权限操作 MongoDB 以避免这些问题至关重要。

分步解决方案

第 1 步:停止 MongoDB 服务

首先确保没有任何 MongoDB 服务正在运行,以防止故障排除和升级过程中出现冲突:

brew services stop mongodb-community

第 2 步:更新 MongoDB 配置

编辑 MongoDB 配置文件以包含必要的指令并确保兼容性:

# Example configuration
systemLog:
  destination: file
  path: /usr/local/var/log/mongodb/mongo.log
  logAppend: true
storage:
  dbPath: /usr/local/var/mongodb
net:
  bindIp: 127.0.0.1, ::1
  ipv6: true

将此配置保存在

/usr/local/etc/mongod.conf
中。

第 3 步:确保正确的文件所有权和权限

首先检查目录的权限和所有权是否正确。

ls -lah /usr/local/var/mongodb

如果不正确,请将MongoDB数据目录的所有权更改为当前用户并设置正确的权限。通常你不需要这样做,但如果你在 sudo 中运行 mongodb 搞乱了权限,这里有一些命令可以将一切恢复正常:

sudo chown -R $(whoami) /usr/local/var/mongodb
sudo chmod -R 755 /usr/local/var/mongodb
sudo chmod -R 700 /usr/local/var/mongodb/journal
sudo chmod -R 700 /usr/local/var/mongodb/diagnostic.data
sudo chgrp -R admin /usr/local/var/mongodb

再次验证更改。如果您的终端发现有问题,可能会向您提供视觉反馈,例如红色文本:

ls -lah /usr/local/var/mongodb

将所有文件备份到安全的地方,请注意,这与备份数据不同。如果按照我的指导您仍然无法解决问题,您可能需要带着备份文件去找专家。不要手动更改这些文件,它们可能很容易被损坏或弄乱。

cp -rf /usr/local/var/mongodb /your-safe-place/

第 4 步:重新安装以前的 MongoDB 版本

重新安装之前正常运行的MongoDB版本,以保证数据导出时系统的稳定性。下面是恢复到 4.4 的示例。如果您不记得了,则必须尝试已安装的所有可能版本:

brew install [email protected]
brew link --force [email protected]
brew services start [email protected]

第5步:导出数据

如果MongoDB服务启动成功,导出所有数据以确保安全备份:

mongodump --out ~/your_mongo_data_backup

这是关键的一步,因为不同版本的 MongoDB Community 需要 mongodb 目录中的文件不同。并且 mongodump 只有当你能够成功启动服务时才起作用。

第6步:安装最新的MongoDB版本

卸载旧版本,清理MongoDB目录,然后安装最新的MongoDB版本:

brew services stop [email protected]
brew uninstall [email protected]
rm -rf /usr/local/var/mongodb/*
brew install mongodb-community
brew services start mongodb-community

假设您想要安装最新的稳定版本。

第7步:恢复数据

将之前导出的数据恢复到新安装的 MongoDB 中:

mongorestore ~/your_mongo_data_backup

第 8 步:验证服务和数据完整性

检查 MongoDB 是否正在运行并且所有数据都完好无损:

brew services list
mongo
show dbs

结论

本指南概述了升级后诊断和解决 macOS 上 MongoDB 启动问题的过程,包括如何正确备份和恢复数据。通过执行以下步骤,您可以确保 MongoDB 在您的系统上可靠运行,并且停机时间最短。

另一件事是经常备份。您可以将此命令添加到 ~/.zshrc 文件或计划任务中。

mongodump --out ~/your_mongo_data_backup
© www.soinside.com 2019 - 2024. All rights reserved.