mongodb服务不启动

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

什么可能是解决scheme?

如果我只运行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 

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

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

固定!

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

作为一个解决scheme,我只需要recursion地更改/data/db目录的所有者。

厌倦了这个问题,所以我决定创build一个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

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

要修改这个情况,要么运行

 mongod --repair 

要么

 > db.repairDatabase(); 

在mongo shell中将数据库恢复到“健康”状态。

这也可能发生,如果您的文件权限得到某种程度的改变。 删除locking文件没有帮助,我们得到的日志文件中的错误,如:

 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 

如果它仍然存在,请删除locking文件:

 # 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 

1 – 在/etc/mongodb.conf 禁用fork选项(如果启用)

2 – 修复你的数据库

 mongod --repair --dbpath DBPATH 

3 – 杀掉当前的mongod进程

findmongo进程

 ps -ef | grep mongo 

你会得到mongod PID

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

停止当前的mongod进程

 kill -9 PID 

4 – 启动mongoDB服务

 service mongodb start 

对于ubunto,是什么让它发生,真正简单的是安装mongodb软件包:

 sudo apt-get install mongodb 

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

刚刚重新安装了mongo,它工作。 没有collections丢失。 最简单的解决scheme,至less对我来说

念良的解决scheme从我的Vagrant ubunuto中变得非常有用,结果我把这两个命令添加到我的/etc/init.d/mongodb文件中:

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

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

这让我惊慌了15分钟,因为它也阻止你在开始进程时读取mongod.log ,所以难以排除故障。

请检查您的“ 数据 ”文件夹的权限。 这是一个权限问题,因为linux用户将面临这个问题,由于SE Linux的权限。 所以你把ownerand组更改为“ mongodb ”作为“ data ”文件夹

我采取了不同的方法:

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

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

所以,这不是“首要”的基础设施,不需要一直在上升,但仍然是必不可less的。

我做什么:在我的运行脚本中,我检查mongo是否在运行 –

 if pgrep "mongod" >/dev/null 2>&1 

如果没有运行,那么我跑

 sudo mongod & 

像魅力一样工作,没有设置等

如果你的用例类似,让我知道它是否也适用于你。

祝你好运!

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

为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 

我有问题,启动服务MongoDB失败,没有日志。 我所做的修复错误是给用户的目录/ var / log / mongodb写访问权限mongodb