我使用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
但是在使用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
答案 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
答案 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组和用户。
因此,我按照以下步骤操作:
更改用户:组权限:
chown mongodb:mongodb <YOUR_SOCK>
sudo systemctl start mongod
答案 18 :(得分:0)
回想一下,根据MongoDB官方文档,启动服务的正确命令是(@Ubuntu):sudo service mongod start
(06/2018)(否mongodb
或mongo
)。 / 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个空格,则它将无效。