데이터 디렉토리를 변경 한 후 MongoDB가 시작되지 않습니다


10

yum을mongodb 사용하여 인스턴스를 설치했습니다 . . 이제 모든 것이 잘 작동합니다. 을 사용하여 서비스를 시작했습니다 service mongod start. 잘 작동한다. 그런 다음 구성 파일에서 data directorylog path을 변경했습니다 . 서버를 다시 시작하고 서비스를 시작했습니다. 하지만 아래 오류가 발생합니다.

Restarting mongod (via systemctl):  Job for mongod.service failed. See 'systemctl status mongod.service' and 'journalctl -xn' for details.
                                                           [FAILED]

내가 줄 때 systemctl status mongod.service아래를 얻습니다.

 Loaded: loaded (/etc/rc.d/init.d/mongod)
   Active: failed (Result: exit-code) since Wed 2015-03-18 11:35:56 IST; 22s ago
  Process: 10672 ExecStop=/etc/rc.d/init.d/mongod stop (code=exited, status=0/SUCCESS)
  Process: 10841 ExecStart=/etc/rc.d/init.d/mongod start (code=exited, status=1/FAILURE)
 Main PID: 10509 (code=exited, status=0/SUCCESS)

Mar 18 11:35:56 localhost systemd[1]: Starting SYSV: Mongo is a scalable, document-oriented database....
Mar 18 11:35:56 localhost runuser[10850]: pam_unix(runuser:session): session opened for user mongod by (uid=0)
Mar 18 11:35:56 localhost runuser[10850]: pam_unix(runuser:session): session closed for user mongod
Mar 18 11:35:56 localhost mongod[10841]: Starting mongod: [FAILED]
Mar 18 11:35:56 localhost systemd[1]: mongod.service: control process exited, code=exited status=1
Mar 18 11:35:56 localhost systemd[1]: Failed to start SYSV: Mongo is a scalable, document-oriented database..
Mar 18 11:35:56 localhost systemd[1]: Unit mongod.service entered failed state.

내가 줄 때 journalctl -xn아래를 얻습니다.

-- Logs begin at Wed 2015-03-18 08:56:56 IST, end at Wed 2015-03-18 11:35:56 IST. --
Mar 18 11:30:01 localhost systemd[1]: Starting Session 20 of user root.
-- Subject: Unit session-20.scope has begun with start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit session-20.scope has begun starting up.
Mar 18 11:30:01 localhost systemd[1]: Started Session 20 of user root.
-- Subject: Unit session-20.scope has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit session-20.scope has finished starting up.
-- 
-- The start-up result is done.
Mar 18 11:30:01 localhost CROND[10712]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Mar 18 11:35:56 localhost systemd[1]: Starting SYSV: Mongo is a scalable, document-oriented database....
-- Subject: Unit mongod.service has begun with start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit mongod.service has begun starting up.
Mar 18 11:35:56 localhost runuser[10850]: pam_unix(runuser:session): session opened for user mongod by (uid=0)
Mar 18 11:35:56 localhost runuser[10850]: pam_unix(runuser:session): session closed for user mongod
Mar 18 11:35:56 localhost mongod[10841]: Starting mongod: [FAILED]
Mar 18 11:35:56 localhost systemd[1]: mongod.service: control process exited, code=exited status=1
Mar 18 11:35:56 localhost systemd[1]: Failed to start SYSV: Mongo is a scalable, document-oriented database..
-- Subject: Unit mongod.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel

누구 든지이 문제를 해결하도록 도울 수 있습니까? 감사!!!

추신 : 내가 만든 데이터 디렉토리에는 사용자에 대한 모든 권한이 있습니다. 그러나 다시 데이터 디렉토리를 기본값 ( /var/lib/mongodb) 으로 변경하면 정상적으로 작동합니다.

답변:


6

비슷한 문제가 발생 mongod.conf하여 제 경우 에는 잘못 구성 된 파일 인 것으로 나타났습니다 . 새 디렉토리에 대한 권한이 올바르게 설정되지 않았을 수도 있습니다. chown -R mongod:mongod <directory name>내가 액세스를 보장하는 방법이었습니다 (물론 chmod 600 <dir>물론). 마지막으로, ls -Z컨텍스트가 올바른지 확인하기 위해를 실행 하십시오. 나는 나를 위해 일한 기본 디렉토리와 비교했다.

이 문제가 해결되지 않은 경우 로그 파일의 내용도 표시하십시오. 거기에 실마리가있을 수 있습니다.


4

@mustaccio는 말에 확장, 나를 위해 대답은 새로운에서 SELinux를 문맥했다 logpathdbpath. 나는 다음 명령을 실행했으며 모두 잘되었다.

sudo chcon -Rv --type=mongod_log_t $logpath
sudo chcon -Rv --type=mongod_var_lib_t $dbpath

(이것은 RHEL 7.1 btw에있었습니다)


4

우분투 서버뿐만 아니라 라즈베리 파이에서도 이것을 가지고있었습니다.

“mongod.service에 대한 작업이 실패했습니다. 자세한 내용은 'systemctl status mongod.service'및 'journalctl -xn'을 참조하십시오. "

다른 이유로이 문제가 다른 경우에 발생했습니다.

  1. 이름이 잘못 지정된 .conf 파일 – 실제 파일이 있던 mongodb 스크립트 ( /etc/init.d/mongodb57 로 이동 ) . 57 번째 줄을 변경하면 문제가 해결되었습니다. 또한 스크립트 이름을 동일하게 변경할 수 있습니다.CONF=/etc/mongod.conf/etc/mongodb.conf

  2. mongod.lock 파일mongod가 마지막으로 중지했을 때 데이터베이스를 닫을 기회가 없었습니다. 그러면 데이터베이스 폴더에이라는 파일이 남습니다 mongod.lock. 폴더 안에는 숫자가 있습니다 (Mongo가 마지막으로 사용한 PID라고 생각합니다). 이 파일이 존재하면 mongod 서비스를 시작할 수 없습니다. 파일을 삭제하고 다시 시도하십시오.

  3. mongo 사용자 – mongod.service를 시작하고 실행할 책임이있는 Linux 사용자를 만들어야했습니다. 나는 내 mongo라는 이름을 지정 /etc/init.d/mongodb하고 나를 위해 95 번째 줄의 스크립트를 업데이트했습니다 DAEMONUSER=${DAEMONUSER:-mongo}. 이것은 물론 mongo (또는 내가 생각하는 것)라는 새로운 사용자를 만든 경우에만 작동합니다.

  4. DB 권한 – 이것은 대중적인 것입니다. 데이터베이스 폴더의 위치를 ​​선언하면 'mongo'사용자에게 해당 파일의 소유권이 있는지 확인해야합니다. 예를 들어, 내 데이터베이스는에 저장됩니다 /data/db. 나는 다음 명령을 실행했다.
    sudo chown –R mongo:mongo /data
    그리고 이것은 /data모든 하위 디렉토리의 소유권을 mongo 사용자에게 로 옮겼다 .

  5. 잘못된 서비스 – 이것은 나를 위해 조금 창피했습니다. mongo대신 서비스 로 시작하려고했습니다 mongod. mongomongo에 직접 명령을 직접 실행하고 입력 할 수있는 쉘입니다. 이것이 내가 데이터베이스를 생성하고 예를 들어 몇 가지 객체를 추가 한 방법입니다. mongod반면에 작성 / 액세스에 사용하는 다른 응용 프로그램을 위해 데이터베이스를 호스팅하는 백그라운드에서 실행되는 mongo 데몬입니다. conf 파일, 스크립트 등 어디에서나 섞지 마십시오.

이 중 하나가 문제를 해결하기를 바랍니다.

참고로 내 mongodb.conf파일이 비어 있습니다. 그러나 비어있는 경우에도 올바르게 가리켜 야합니다.


2

나는 이것을 시도했고 효과가 있었다.

sudo chown -R mongodb:mongodb /var/log/mongodb
sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chmod -R 755 /var/lib/mongodb
sudo chmod -R 755 /var/log/mongodb

1

Centos 7 Repos와 함께 제공되는 mongo에서 Mongos 자체 repos로 업그레이드하는 중에이 문제가 발생했습니다. 실제로 V2에서 V3으로 업그레이드합니다.

그 CentOS는 7 REPO 밝혀 사용자가 필요 하여 MongoDB를 mongos 자신의 repo는 사용자의 원하는 반면, mongod를

결국 사용자 이름이 다르고 눈치 채지 못했기 때문에 이전 설치에서 새 설치로 쓸 수 없었던 로그 파일이었습니다.


1

내 시스템 (Fedora)에서 tmpfs (ram)에 "/ var / log"가 있습니다. 그 파티션의 모든 것을 재부팅 할 때마다 si가 손실됩니다. SSD 드라이브가 있고 I / O (드라이브 수명 절약)를 줄이려고하므로 많은 사람들이 이에 동의합니다.

해결책은 시스템을 재부팅 할 때마다 / var / log / mongodb 디렉토리를 만들고 mongodb를 소유자로 설정하는 것입니다.

다음과 같은 스크립트를 사용하십시오.

#!/bin/sh
sudo mkdir /var/log/mongodb
sudo chown mongodb:mongodb /var/log/mongodb

mongod가 사용하는 사용자가 무엇인지 확실하지 않은 경우 다음을 수행하십시오.

cat /etc/passwd | grep mongo

시스템 시작에 스크립트를 추가하십시오.


0

경로를 편집하지 않습니다. 나는 명령으로 문제를 해결했다.

mongod --dbpath /data/mongo

0

이것은 권한 문제입니다. 데이터 디렉토리 또는 로그 파일의 경로를 변경하면 새 디렉토리에 대한 권한을 부여해야합니다. 그럼 잘 작동합니다. 이와 같은 문제가 발생한 경우 먼저 "mongod.log"로그 파일을 확인하십시오.


이것은 도움이되지 않았습니다. mongod 서비스를 실행하는 사용자에게 "Log"폴더에 대한 모든 권한을 부여했습니다. Windows Server 2016을 사용하고 있습니다. 로그 파일의 경로를 변경 한 후에도 서비스를 다시 시작할 수 없습니다. 오류 : "서비스가 제어 기능에 응답하지 않습니다.", 어떤 생각이 있습니까?
Eddie Kumar

0

MongoDB 서버를 중지하십시오.

service mongod stop

mongo 디렉토리를 새 디렉토리로 복사하십시오.

rsync -av /var/lib/mongo /home/data/

이전 디렉토리의 이름을 바꾸십시오.

mv /var/lib/mongo /var/lib/mongo.bak

새로운 위치로의 Symlink :

ln -s /home/data/mongo /var/lib/mongo

MongoDB 서버를 시작하십시오.

service mongod start
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.