programing tip

mongodb 서비스가 시작되지 않습니다

itbloger 2020. 11. 19. 07:54
반응형

mongodb 서비스가 시작되지 않습니다


mongodb-10gen debian 패키지를 사용하여 mongodb 2.0.3을 설치했습니다. 기본적으로 설치된 서비스가 컴퓨터가 시작될 때 시작되지 않는 것을 제외하고는 모든 것이 잘되었습니다. mongod단지 루트 사용자로 실행 중입니다. 아마도 이것이 이유 일 것입니다. 하지만 내가 아는 한, 서비스는 루트 사용자가 추가했기 때문에 실행 중이어야합니다.

해결책은 무엇일까요?

내가 그냥 달리면 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

내 우분투 서버에서 다음을 실행하십시오.

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

결정된!

그 이유는 있었다 dbpath변수 /etc/mongodb.conf. 이전에는 mongodb 1.8을 사용했는데 dbpath의 기본값은 /data/db. upstart 작업 mongodb(mongodb-10gen 패키지와 함께 제공됨)은 mongodwith --config /etc/mongodb.conf옵션을 호출합니다 .

해결책으로 /data/db디렉토리 소유자를 재귀 적 으로 변경하기 만하면되었습니다.


이는 파일 권한이 어떻게 든 변경된 경우에도 발생할 수 있습니다. 잠금 파일을 제거해도 도움이되지 않았으며 로그 파일에 다음과 같은 오류가 발생했습니다.

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

나는 한 지루 내 몽고 데이터를 쉽게 기초를 복원하는 쉘 스크립트를 작성하기로 결정 그래서이 문제.

#!/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 셸에서 데이터베이스를 "정상"상태로 되돌립니다.


1- 활성화 경우 옵션 비활성화fork/etc/mongodb.conf

2- 데이터베이스 복구

mongod --repair --dbpath DBPATH

3- 현재 mongod 프로세스 종료

몽고 프로세스 찾기

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

우분 토의 경우 mongodb 패키지를 설치하는 것이 정말 간단했습니다.

sudo apt-get install  mongodb

서비스를 실행하기 위해 .lock 파일을 제거해야하는 경우가 있습니다.


몽고를 다시 설치했고 작동했습니다. 손실 된 컬렉션이 없습니다. 나를위한 가장 쉬운 솔루션


Nianliang's solution turned out so useful from my Vagrant ubunuto, thart I ended up adding these 2 commands to my /etc/init.d/mongodb file:

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

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

This can also happen if the disk is full at your logpath path (e.g. if you have a dedicated /log/ directory/drive and it is full).

This had me panicking for a good 15 minutes because it also prevents you from reading the mongod.log when starting the process, so difficult to troubleshoot.


Please check your permissions for "data" folder. This is a permission issue, as linux users will face this issue due to SE linux permissions. So you change the ownerand group both to "mongodb" for the "data" folder


I took a different approach:

Background: I use mongodb, single node, local to my server, as a staging area.

I installed mongo based on instructions available in MongoDB docs.

So, this is not 'prime' infrastructure, does not need to be up all the time - but still essential.

What I do: In my run script, I check if mongo is running using -

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

If it is not running, then I run

sudo mongod &

Been working like a charm, no setup etc.

If your use case is similar, let me know if it works for you too.

Good luck!


Install mongodb for ubuntu 14.04

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

I had issue that starting the service mongodb failed, without logs. what i did to fix the error is to give write access to the directory /var/log/mongodb for user mongodb


Recall that according to official MongoDB documentation, the right command to start the service is (@Ubuntu): sudo service mongod start (06/2018) (no mongodb or mongo).

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

참고URL : https://stackoverflow.com/questions/9884233/mongodb-service-is-not-starting-up

반응형