mongodb服务没有启动

Ese*_*ulu 64 mongodb

我使用mongodb-10gen debian软件包安装了mongodb 2.0.3.一切顺利,除了默认安装的服务在计算机启动时没有启动.它mongod仅以root用户身份运行.也许这就是原因.但据我所知,服务应该运行,因为它们是由root用户添加的.

可能是什么解决方案?

如果我跑的话 mongod

Tue Mar 27 13:00:44 [initandlisten] couldn't open /data/db/transaction_processor_dummy_development.ns errno:1 Operation not permitted
Run Code Online (Sandbox Code Playgroud)

如果我运行sudo service mongodb start它说:

mongodb start/running, process 4861
Run Code Online (Sandbox Code Playgroud)

但是在看的时候没有过程htopmongo说:

MongoDB shell version: 2.0.3
connecting to: test
Tue Mar 27 13:02:40 Error: couldn't connect to server 127.0.0.1 shell/mongo.js:84
exception: connect failed
Run Code Online (Sandbox Code Playgroud)

Nia*_*ang 112

在我的ubuntu服务器上,运行:

sudo rm /var/lib/mongodb/mongod.lock
mongod --repair
sudo service mongodb start
Run Code Online (Sandbox Code Playgroud)


Ese*_*ulu 31

固定!

原因是dbpath变量/etc/mongodb.conf.以前,我使用的是mongodb 1.8,其中dbpath的默认值是/data/db.upstart作业mongodb(mongodb-10gen包附带)调用mongodwith --config /etc/mongodb.conf选项.

作为一种解决方案,我只需要/data/db递归更改目录的所有者.


Rya*_*anH 26

如果您的文件权限以某种方式更改,也会发生这种情况.删除锁文件没有帮助,我们在日志文件中收到错误,如:

2016-01-20T09:14:58.210-0800 [initandlisten] warning couldn't write to / rename file /var/lib/mongodb/journal/prealloc.0: couldn't open file    /var/lib/mongodb/journal/prealloc.0 for writing errno:13 Permission denied
2016-01-20T09:14:58.288-0800 [initandlisten] couldn't open /var/lib/mongodb/local.ns errno:13 Permission denied
2016-01-20T09:14:58.288-0800 [initandlisten] error couldn't open file /var/lib/mongodb/local.ns terminating
Run Code Online (Sandbox Code Playgroud)

所以,去检查权限:

ls -l /var/lib/mongodb

total 245780
drwxr-xr-x 2 mongodb mongodb     4096 Jan 20 09:14 journal
drwxr-xr-x 2 root    root        4096 Jan 20 09:11 local
-rw------- 1 root    root    67108864 Jan 20 09:11 local.0
-rw------- 1 root    root    16777216 Jan 20 09:11 local.ns
-rwxr-xr-x 1 mongodb nogroup        0 Jan 20 09:14 mongod.lock
Run Code Online (Sandbox Code Playgroud)

修理:

# chown -R mongodb:mongodb /var/lib/mongodb
Run Code Online (Sandbox Code Playgroud)

如果锁定文件仍然存在,请将其删除:

# rm /var/lib/mongodb/mongod.lock
Run Code Online (Sandbox Code Playgroud)

启动mongodb

# service mongodb start
Run Code Online (Sandbox Code Playgroud)

记录日志,你应该看到它的结尾:

tail -f /var/log/mongodb/mongodb.log
2016-01-20T09:16:02.025-0800 [initandlisten] waiting for connections on port 27017
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用。有一些 root 用户的数据库文件 (2认同)

And*_*res 20

我对这个问题感到厌倦,所以我决定创建一个shell脚本来轻松恢复我的mongo数据库.

#!/bin/sh
sudo rm /var/lib/mongodb/mongod.lock
sudo -u mongodb mongod -f /etc/mongodb.conf --repair
sudo service mongodb start
Run Code Online (Sandbox Code Playgroud)

http://ideone.com/EuqDZ8


Soc*_*lai 12

请记住,通过强制删除.lock文件重新启动数据库时,数据可能会损坏.如果以这种方式重新启动服务器,则不应将您的服务器视为"健康".

要修改情况,要么运行

mongod --repair
Run Code Online (Sandbox Code Playgroud)

要么

> db.repairDatabase();    
Run Code Online (Sandbox Code Playgroud)

在mongo shell中将数据库恢复到"健康"状态.


Abd*_*iaa 10

1 - 如果启用,则禁用fork选项/etc/mongodb.conf

2 - 修复您的数据库

mongod --repair --dbpath DBPATH
Run Code Online (Sandbox Code Playgroud)

3 - 杀死当前的mongod进程

找到mongo进程

ps -ef | grep mongo
Run Code Online (Sandbox Code Playgroud)

你会得到mongod PID

mongodb   PID     1  0 06:26 ?        00:00:00 /usr/bin/mongod --config /etc/mongodb.conf
Run Code Online (Sandbox Code Playgroud)

停止当前的mongod进程

kill -9 PID
Run Code Online (Sandbox Code Playgroud)

4 - 启动mongoDB服务

service mongodb start
Run Code Online (Sandbox Code Playgroud)


got*_*tqn 8

删除.lock文件并重新安装并没有解决我的机器(Ubuntu 19.10)上的问题。问题是在意外关闭后,MongoDB 袜子不再属于 MongoDB 组和用户。

所以,我按照以下步骤操作:

  1. cd /tmp
  2. ls *.sock
  3. 更改用户:组权限:

    chown mongodb:mongodb <YOUR_SOCK>
    
    Run Code Online (Sandbox Code Playgroud)
  4. 须藤 systemctl 启动 mongod

  5. 须藤 systemctl 状态 mongod


sha*_*sol 7

对于ubunto来说,实现它的原因很简单,就是安装mongodb包:

sudo apt-get install  mongodb
Run Code Online (Sandbox Code Playgroud)


小智 5

有时您需要删除.lock文件才能运行服务


tra*_*bui 5

sudo -u mongodb mongod --repair --dbpath /var/lib/mongodb/
sudo service mongodb start
Run Code Online (Sandbox Code Playgroud)