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
但是用htop
和mongo
一起看时没有任何过程:
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.conf
的dbpath
variables。 以前,我使用的是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
请记住,通过强制删除.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