我有一台完全正常运行MongoDB的Ubuntu服务器,但服务器耗尽了磁盘空间并崩溃了。我已将其清除,但现在我无法恢复Mongo并作为服务运行。
之前已经发生这种情况,我可以通过以下方式解决问题:
sudo rm /var/lib/mongodb/mongod.lock
sudo mongod --repair
sudo chown mongodb /tmp/mongodb-27017.sock
sudo service mongod start
但是现在当我这样做时,我在修理过程中遇到了这个错误:
exception in initAndListen: 29 Data directory /data/db not found., terminating
当我追加dbpath的位置时,我得到一个不同的错误:
sudo mongod --dbpath /var/lib/mongodb --repair
...
Failed to unlink socket file /tmp/mongodb-27017.sock errno:1 Operation not permitted
Fatal Assertion 28578
奇怪的是,如果我独立运行mongod服务,一切都很有效:
sudo mongod --dbpath /var/lib/mongodb
我能够连接到它并且一切都是hunkydory,但是我需要这个作为服务运行,以便我可以关闭终端窗口。什么想法可能是错的?
我怀疑由于某种原因,当我运行service mongo start命令时,它没有在mongod.conf中获取设置。
好的方法,这就是我的/etc/mongod.conf的样子:
# mongod.conf
storage:
dbPath: /var/lib/mongodb
journal:
enabled: false
# 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: 127.0.0.1
#processManagement:
security:
authorization : enabled
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options:
#auditLog:
#snmp:
更新:我能够取得一些进展。我将/etc/mongod.conf文件复制到/data/db/mongod.conf,它现在似乎找到了正确的数据库,但是,现在我收到了一个新的错误:
listen(): bind() failed errno:98 Address already in use for socket: /tmp/mongodb-27017.sock
addr already in use
Failed to set up sockets during startup.