更改 MongoDB 默认数据位置会阻止远程访问。 Ubuntu 服务器 20.4

Changing MongoDB default data location prevents remote access. Ubuntu server 20.4

我已经为此苦苦挣扎了几天。我最近买了一个 Raspberry Pi 400 并安装了 Ubuntu 服务器 20.04.3 LTS。我已成功设置 mongoDB 并可以远程访问它。现在我想将保存数据的位置更改为插入 pi 的 500GB SSD。

我已将 mongod.conf 文件更改如下

# Where and how to store data.
storage:
#  dbPath: /var/lib/mongodb
  dbPath: /mnt/mongo/data
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0

如您所见,我刚刚将 dbPath 更改为已安装的驱动器。

现在 运行 mongod 我必须 运行 使用命令

mongod --dbpath=/mnt/mongo/data/

我必须使用

修复无法取消链接套接字错误

sudo rm -rf /tmp/mongodb-27017.sock

然后我可以在 PI 上正常连接,但我无法再远程连接。我收到错误

Network is unreachable. Reason: couldn't connect to server 192.168.1.99:27017, connection attempt failed: SocketException: Error connecting to 192.168.1.99:27017 :: caused by :: Connection refused

我的印象是删除 /tmp/mongodb-27017.sock 是解决该错误的正确方法,而 mongo 在启动时创建一个新的。我不确定这是否会导致远程连接出现问题,或者我在将默认 dbPath 移动到 SSD 时丢失了一些东西。

如何更改 Mongo 默认数据库路径并保持在 Ubuntu 服务器上远程访问它的能力?

因为您只在命令行中添加了 --dbpath 选项,其余设置将被忽略(使用默认值)。 最好是在 mongodb.conf 文件中添加所有配置设置,并使用如下配置文件启动 mongodb 服务:

 mongod --config mongod.conf

提示:

如果您希望 mongod 从命令行作为守护进程启动,您需要在 mongod.conf 文件中添加以下选项:

 processManagement:
   fork: true

对于 SSD,您可能还想通过以下方式禁用诊断数据收集 (FTDC):

setParameter: 
  diagnosticDataCollectionEnabled: false

并且还用noatime挂载分区 (以避免不必要的写入 SSD)