[mongodb] 하나의 명령으로 mongo DB를 중지하는 방법

병원에서 MongoDB를 시작 / 중지 할 수 있어야합니다. 시작하는 것은 매우 간단합니다.

./mongod

그러나 mongo DB를 중지하려면 먼저 열린 mongo 셸을 실행 한 다음 두 명령을 입력해야합니다.

$ ./mongo

관리자 사용

db.shutdownServer ()

그래서 몽고 DB를 한 줄로 멈추는 방법을 모르겠습니다. 어떤 도움?



답변

MongoDB 시작 및 중지 는 MongoDB 매뉴얼에서 다룹니다. 쉘, cli, 드라이버 등을 통해 MongoDB를 중지하는 다양한 옵션에 대해 설명합니다. 또한 MongoDB를 잘못 중지 할 수있는 위험 (예 : 데이터 손상)과 다른 킬 (kill) 신호에 대해 설명합니다.

또한 Ubuntu 또는 Debian 용 패키지 관리자를 사용하여 MongoDB를 설치 한 경우 다음과 같이 mongodb (현재 ubuntu의 mongod)를 중지 할 수 있습니다.

  • 건방진 녀석: sudo service mongod stop

  • Sysvinit : sudo /etc/init.d/mongod stop

또는 Mac OS X에서

또는 Red Hat 기반 시스템에서 :

  • service mongod stop

또는 Windows 라는 서비스로 설치 한 경우 MongoDB:

  • net stop MongoDB

서비스로 설치되지 않은 경우 (Windows 7 이상) 다음을 실행할 수 있습니다.

  • taskkill /f /im mongod.exe

부정확 한 종료 문제, 이러한 시나리오를 피하는 가장 좋은 방법 및 부정확 한 종료시 수행 할 작업에 대한 자세한 내용 은 예기치 않은 종료 후 데이터 복구 를 참조하십시오 .


답변

말 그대로 원래 질문의 명령과 동등한 한 줄을 원한다면 별칭을 지정할 수 있습니다.

mongo --eval "db.getSiblingDB('admin').shutdownServer()"

서비스를 통한 MongoDB 시작 및 중지에 대한 Mark의 답변은보다 일반적이고 권장되는 관리 방법입니다.


답변

mongod --dbpath /path/to/your/db --shutdown

공식 정보 : http://docs.mongodb.org/manual/tutorial/manage-mongodb-processes/


답변

서버가 터미널에서 포 그라운드 프로세스로 실행중인 경우이를 눌러 수행 할 수 있습니다.

Ctrl-C

실행중인 서버를 완전히 종료하는 또 다른 방법은 shutdown 명령을 사용하는 것입니다.

> use admin
> db.shutdownServer();

그렇지 않으면 kill과 같은 명령을 사용하여 신호를 보낼 수 있습니다. mongod의 PID가 10014 인 경우 명령은 다음과 같습니다.

kill -2 10014


답변

나는 신호로 멈추기 위해 공식 MongoDB 문서 를 따랐다 . 사용할 수있는 다음 명령 중 하나는 (PID는 표현 Process IDmongod과정을) :

kill PID

신호 15 (SIGTERM)를 보내거나

kill -2 PID

신호 2 (SIGINT)를 보냅니다.

MongoDB 문서의 경고 : 인스턴스 를 종료하기 위해
절대 kill -9SIGKILL을 사용하지 마십시오 mongod.

하나 이상의 인스턴스가 실행 중이거나 PID에 관심이없는 경우 실행중인 pkill모든 mongod프로세스에 신호를 보내는 데 사용할 수 있습니다 .

pkill mongod

또는

pkill -2 mongod

또는 훨씬 더 안전한 것은 귀하에게 속한 프로세스에만 해당됩니다.

pkill -U $USER mongod

또는

pkill -2 -U $USER mongod

추신
: mongod --shutdown현재 MongoDB 문서에 언급되어 있지만 내 컴퓨터 (macOS, mongodb v3.4.10,와 함께 설치됨 homebrew) 에서 호기심으로 작동하지 않기 때문에이 옵션을 사용했습니다 .
Error parsing command line: unrecognised option '--shutdown'

PPS
(macOS 전용) 누구나 궁금해하기 전에 : 아니오,로
brew services stop mongodb
시작하지 않았기 때문에 명령으로 중지 할 수 없었 습니다
brew services start mongodb.
나는 mongod커스텀 커맨드 라인으로 시작 했다 🙂


답변

사용하다 mongod --shutdown

공식 문서에 따르면 : manage-mongodb-processes /

:디


답변

나의 특별한 경우는 :

이전에 mongod를 시작하십시오.

sudo -u mongod mongod -f /etc/mongod.conf

이제 중지하고 싶습니다 mongod.

그리고 공식 문서 Stop mongod Processes를 참조하십시오 .

(1) shutdownServer실패했지만

> use admin
switched to db admin
> db.shutdownServer()
2019-03-06T14:13:15.334+0800 E QUERY    [thread1] Error: shutdownServer failed: {
        "ok" : 0,
        "errmsg" : "shutdown must run from localhost when running db without auth",
        "code" : 13
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.shutdownServer@src/mongo/shell/db.js:302:1
@(shell):1:1

(2) --shutdown여전히 실패했습니다.

# mongod --shutdown
There doesn't seem to be a server running with dbpath: /data/db

(3) –shutdown을 추가 한 이전 시작 명령 :

sudo -u mongod mongod -f /etc/mongod.conf --shutdown
killing process with pid: 30213
failed to kill process: errno:1 Operation not permitted

(4) 사용 service중지 :

service mongod stop

service mongod status

ps에서 프로세스를 볼 수 Active: inactive (dead)있지만 예상 되었지만 mongod실제로는 여전히 실행 중입니다.

# ps -edaf | grep mongo | grep -v grep
root     30213     1  0 Feb04 ?        03:33:22 mongod --port PORT --dbpath=/var/lib/mongo

그리고 마지막으로 다음 과 같은 방법 으로 mongod를 중지하십시오.

# sudo mongod -f /etc/mongod.conf --shutdown
killing process with pid: 30213

지금까지 근본 원인 : 여전히 알 수 없음 …

위의 솔루션이 도움이되기를 바랍니다.