자체 관리형 mongod
프로세스 구성
MongoDB 는 표준 프로그램으로 실행됩니다. mongod
명령을 실행하고 옵션을 지정하여 명령줄 에서 MongoDB 를 시작할 수 있습니다. 옵션 목록은 mongod
참조를 참조하세요. MongoDB 는 Windows 서비스로 실행 수도 있습니다. 자세한 내용 은 Windows 서비스로 MongoDB Community Edition 시작 하기를 참조하세요. MongoDB를 설치하려면 MongoDB 설치를 참조 MongoDB.
다음 예시에서는 mongod
프로세스가 포함된 디렉토리가 시스템 경로에 있다고 가정합니다. mongod
프로세스는 개별 서버에서 실행되는 프라이머리 데이터베이스 프로세스입니다. mongos
는 클라이언트의 관점에서 .mongod
와 동등한 일관적인 MongoDB 인터페이스를 제공합니다. mongosh
바이너리는 관리 셸을 제공합니다.
이 문서에서는 mongod
프로세스를 설명하지만 그 중 일부는 mongos
인스턴스에 적용될 수 있습니다.
mongod
프로세스 시작
기본적으로 MongoDB는 27017
포트에서 클라이언트의 연결을 수신하고 데이터를 /data/db
디렉토리에 저장합니다.
Windows에서는 MongoDB를 시작하는 드라이브에 이 경로가 위치합니다. 예를 들어 --dbpath
를 지정하지 않고 C:\
드라이브에서 MongoDB 서버를 시작하는 경우 모든 데이터 파일이 C:\data\db
에 저장됩니다.
모든 기본값을 사용하여 MongoDB를 시작하려면 시스템 셸에서 아래 명령을 실행합니다.
mongod
데이터 디렉토리 지정
mongod
가 /data/db
이외의 경로에 데이터 파일을 저장하도록 하려면 dbPath
를 지정하세요. dbPath
는 mongod
를 시작하기 전에 존재해야 합니다. 존재하지 않는 경우에는 mongod
가 데이터를 읽고 이 경로에 쓸 수 있도록 디렉토리와 권한을 생성하세요. 권한에 대한 자세한 내용은 보안 연산 문서를 참조하시기 바랍니다.
mongod
에 데이터 디렉토리로 사용할 dbPath
를 지정하려면 --dbpath
옵션을 선택합니다. 다음 호출은 mongod
인스턴스를 시작하고 /srv/mongodb
경로에 데이터를 저장합니다.
mongod --dbpath /srv/mongodb/
참고
mongod
에는 MongoDB 엔지니어가 배포 문제를 해결하는 데 도움이 되는 풀타임 진단 데이터 캡처(Full Time Diagnostic Data Capture, FTDC) 메커니즘이 포함되어 있습니다. 이 스레드가 실패하면 원래 프로세스를 종료합니다. 가장 일반적인 오류를 방지하려면 프로세스를 실행하는 사용자에게 FTDC diagnostic.data
디렉토리를 생성할 권한이 있는지 확인하십시오. mongod
의 경우 이 디렉토리는 storage.dbPath
내에 있습니다. mongos
의 경우 systemLog.path
과 유사합니다.
TCP 포트 지정
네트워크 인터페이스에서 한 번에 하나의 프로세스 연결만 수신할 수 있습니다. 단일 머신에서 여러 건의 mongod
프로세스를 실행하거나 이 포트를 사용해야 하는 다른 프로세스가 있는 경우 각각 다른 포트를 할당하여 클라이언트 연결을 수신해야 합니다.
mongod
에 포트를 지정하려면 명령줄에서 --port
옵션을 사용합니다. 다음 명령은 12345
포트에서 수신하는 mongod
를 시작합니다.
mongod --port 12345
혼동을 피하기 위해 가능하면 기본 포트 번호를 사용합니다.
을(를) 데몬으로시작 mongod
mongod
프로세스를 데몬(예: fork
)으로 실행하고 출력을 로그 파일에 기록하려면 --fork
및 --logpath
옵션을 사용합니다. 로그 디렉터리를 만들어야 하지만 로그 디렉터리가 없는 경우 mongod
가 로그 파일을 생성합니다.
다음 명령은 mongod
를 데몬으로 시작하고 로그 출력을 /var/log/mongodb/mongod.log
에 기록합니다.
mongod --fork --logpath /var/log/mongodb/mongod.log
추가 구성 옵션
일반적인 사용 사례에 대한 일반적인 구성 및 배포 개요는 자체 관리 배포를 위한 런타임 데이터베이스 구성을 참조하세요.
mongod
프로세스 중지
정상 종료 시 mongod
는 대기 중인 모든 작업을 완료하고 모든 데이터를 데이터 파일로 플러시한 다음 모든 데이터 파일을 닫습니다. 다른 종료 방식은 비정상적이며 데이터 파일의 유효성을 손상시킬 수 있습니다.
정상적으로 종료하려면 항상 다음 방법 중 하나를 사용하여 mongod
인스턴스를 종료합니다:
다음을 사용하세요. shutdownServer()
다음과 같이 db.shutdownServer()
메서드를 사용하여 mongosh
에서 mongod
(을)를 종료합니다.
use admin db.shutdownServer()
init 스크립트에서 동일한 메서드를 호출해도 동일한 결과를 얻을 수 있습니다.
authorization
이 허용된 시스템의 경우 사용자는 admin
데이터베이스에 인증된 경우, 혹은 인증이 허용되지 않는다면 시스템의 로컬 호스트 인터페이스를 통해서만 db.shutdownServer()
를 실행할 수 있습니다.
다음을 사용하세요. --shutdown
Linux에서만 지원됩니다. 명령줄에서 --shutdown
옵션을 사용하여 mongod
를 종료합니다:
mongod --shutdown
다음을 사용하세요. CTRL-C
mongod
인스턴스를 대화형 모드로 실행하는 경우(예: --fork
없이 실행), 정상 종료를 위해 Control-C
를 실행합니다.
다음을 사용하세요. kill
Linux 및 macOS에서만 지원됩니다. 명령줄에서 다음 명령 중 하나를 사용하여 특정 mongod
인스턴스를 종료합니다:
kill <mongod process ID> kill -2 <mongod process ID>
SIGTERM
및 복제 세트
복제본 세트 프라이머리가 SIGTERM
을 수신하면 프라이머리를 강등한 후 종료하고자 합니다.
강등이 성공한 경우 인스턴스는 새로운 프라이머리 이어지는 투표에 참여하지 않고 종료를 계속합니다.
강등에 실패하면 인스턴스가 계속 종료됩니다.
SIGKILL
경고
kill -9
(즉, SIGKILL
)을 사용하여 mongod 인스턴스를 종료하면 안 됩니다.
프로세스 mongod
문제 해결
역추적 생성
Linux에서 실행되는 MongoDB 인스턴스의 경우:
mongod
및mongos
프로세스가SIGUSR2
신호를 받으면 각 프로세스 스레드의 로그에 역추적 세부 정보가 추가됩니다.역추적 세부 정보에는 프로세스에 대한 함수 호출이 표시되며, 이러한 정보는 진단에 사용하고 필요한 경우 MongoDB 지원팀에 제공할 수 있습니다.
역추적 기능은 다음 아키텍처에서 사용할 수 있습니다.
x86_64
arm64
(MongoDB 5.0.10 및 6.0부터)
실행 중인 mongod
프로세스에 아래 명령을 사용하여 SIGUSR2
신호를 실행합니다.
kill -SIGUSR2 <mongod process ID>
복제 세트 중지
절차
mongod
가 복제본 세트의 프라이머리인 경우 이 mongod
인스턴스의 종료 프로세스는 아래 단계로 구성됩니다.
복제 세트 강제 종료
최신 세컨더리가 없는 상태에서 프라이머리를 종료하려면 다음 mongosh
연산에서와 같이 force
인수와 함께 shutdown
명령을 실행하세요.
db.adminCommand({shutdown : 1, force : true})
지정된 시간(초) 동안 세컨더리를 계속 확인하려면 timeoutSecs
인수를 적용하여 shutdown
을 실행합니다. 현재 최신 상태인 세컨더리가 없다면 MongoDB는 지정된 시간(초) 동안 즉시세컨더리를 계속 확인합니다. 할당된 시간 내에 세컨더리 중 하나라도 따라잡으면 프라이머리가 종료됩니다. 세컨더리가 따라잡지 못하면 종료되지 않습니다.
다음 명령은 timeoutSecs
를 5
로 실행설정하여 shutdown
을 실행합니다.
db.adminCommand({shutdown : 1, timeoutSecs : 5})
또는 db.shutdownServer()
메서드와 함께 timeoutSecs
인수를 사용할 수 있습니다.
db.shutdownServer({timeoutSecs : 5})