mongodb服务没有启动

时间:2012-03-27 06:13:30

标签: 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

如果我运行sudo service mongodb start,则说:

mongodb start/running, process 4861

但是在使用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

21 个答案:

答案 0 :(得分:108)

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

sudo rm /var/lib/mongodb/mongod.lock
mongod --repair
sudo service mongodb start

答案 1 :(得分:30)

固定!

原因是dbpath中的/etc/mongodb.conf变量。 以前,我使用的是mongodb 1.8,其中dbpath的默认值为/data/db。 新手工作mongodb(与mongodb-10gen包一起提供)使用mongod选项调用--config /etc/mongodb.conf

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

答案 2 :(得分: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

所以,去检查权限:

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

修复:

# chown -R mongodb:mongodb /var/lib/mongodb

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

# rm /var/lib/mongodb/mongod.lock

启动mongodb

# service mongodb start

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

tail -f /var/log/mongodb/mongodb.log
2016-01-20T09:16:02.025-0800 [initandlisten] waiting for connections on port 27017

答案 3 :(得分:19)

我对这个问题无聊所以我决定创建一个shell脚本来轻松恢复我的mongo数据库。

#!/bin/sh
sudo rm /var/lib/mongodb/mongod.lock
sudo -u mongodb mongod -f /etc/mongodb.conf --repair
sudo service mongodb start

http://ideone.com/EuqDZ8

答案 4 :(得分:12)

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

要修改情况,请运行

mongod --repair

> db.repairDatabase();    
在mongo shell中

将数据库恢复到“健康”状态。

答案 5 :(得分:10)

1 - 禁用fork 选项,如果已启用

2 - 修复您的数据库

/etc/mongodb.conf

3 - 杀死当前的mongod进程

查找mongo进程

mongod --repair --dbpath DBPATH

你会获得mongod PID

ps -ef | grep mongo

停止当前的mongod进程

mongodb   PID     1  0 06:26 ?        00:00:00 /usr/bin/mongod --config /etc/mongodb.conf

4 - 启动mongoDB服务

kill -9 PID

答案 6 :(得分:6)

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

sudo apt-get install  mongodb

答案 7 :(得分:5)

有时您需要删除.lock文件以使服务运行

答案 8 :(得分:3)

Nianliang的解决方案在我的Vagrant ubunuto中非常有用,但最后我将这两个命令添加到我的/etc/init.d/mongodb文件中:

.
.
.    
start|stop|restart)
        rm /var/lib/mongodb/mongod.lock
        mongod --repair
.
.
.

答案 9 :(得分:3)

sudo -u mongodb mongod --repair --dbpath /var/lib/mongodb/
sudo service mongodb start

答案 10 :(得分:3)

如果您的logpath路径磁盘已满(例如,如果您有专用的/log/目录/驱动器且已满),也会发生这种情况。

这让我感到恐慌15分钟,因为它也会阻止你在开始这个过程时阅读mongod.log,因此很难排除故障。

答案 11 :(得分:3)

刚刚重新安装了mongo并且工作正常。没有收藏丢失。 最简单的解决方案至少对我来说

答案 12 :(得分:3)

请检查“数据”文件夹的权限。这是一个权限问题,因为Linux用户将因SE Linux权限而面临此问题。因此,对于“数据”文件夹,将ownerand组更改为“ mongodb

答案 13 :(得分:2)

我采取了不同的方法:

背景: 我使用mongodb,单节点,我的服务器本地,作为临时区域。

我根据MongoDB文档中提供的说明安装了mongo。

所以,这不是'优质'基础设施,不需要一直保持增长 - 但仍然必不可少。

我做什么: 在我的运行脚本中,我使用 -

检查mongo是否正在运行
if pgrep "mongod" >/dev/null 2>&1

如果它没有运行,那么我运行

sudo mongod &

一直在做魅力,没有设置等。

如果您的用例相似,请告诉我它是否适合您。

祝你好运!

答案 14 :(得分:1)

为ubuntu 14.04安装mongodb

sudo nano /etc/apt/sources.list.d/mongodb-org-3.2.list

echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

sudo apt-get update

sudo apt-get install -y mongodb-org=3.2.10 mongodb-org-server=3.2.10 mongodb-org-shell=3.2.10 mongodb-org-mongos=3.2.10 mongodb-org-tools=3.2.10

答案 15 :(得分:1)

我遇到问题,启动服务mongodb失败,没有日志。 我所做的修复错误的方法是为用户mongodb提供对目录/ var / log / mongodb的写访问权

答案 16 :(得分:1)

可以帮助我诊断问题的是运行mongod并指定/etc/mondgob.conf配置文件:

mongod --config /etc/mongodb.conf

这表明/etc/mongdb.conf中的某些选项为“无法识别”。我已经注释掉security:下的两个选项,并且仅将security:放在一行上,这导致该服务无法启动。这看起来像个错误。

security:
#  authorization: enabled
#  keyFile: /etc/ssl/mongo-keyfile

^^错误

#security:
#  authorization: enabled
#  keyFile: /etc/ssl/mongo-keyfile

^^正确评论。

答案 17 :(得分:1)

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

因此,我按照以下步骤操作:

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

    chown mongodb:mongodb <YOUR_SOCK>
    
  4. sudo systemctl start mongod

  5. sudo systemctl status mongod

答案 18 :(得分:0)

回想一下,根据MongoDB官方文档,启动服务的正确命令是(@Ubuntu):sudo service mongod start(06/2018)(否mongodbmongo)。 / p>

参考:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/

答案 19 :(得分:0)

我一直在努力解决类似的问题,并相应地分享解决方案。我们使用mongo副本集,并且我的辅助服务器上的mongo服务花费了很长时间才能启动。 (大约10-15分钟)

在尝试使用--dbpath中的其他文件夹配置mongo之前找不到任何内容 而且效果很好,所以我们知道先前的路径(即安装目录)存在一些问题。 因此,与nss团队一起解决了网络安装问题。

希望这对某人有帮助

答案 20 :(得分:0)

这很奇怪,请确保配置文件中的间距一致。

例如:

processManagement:
  timeZoneInfo: /usr/share/zoneinfo

security:
    authorization: 'enabled'

如果授权密钥前面有4个空格(如上),其余为2个空格,则它将无效。