db.shutdownServer()
버전 5.0에서 변경됨
db.shutdownServer()
현재
mongod
또는 프로세스를 깔끔하고 안전하게mongos
종료합니다. 관리db.shutdownServer()
데이터베이스 에 대해 작업을 실행해야 합니다.db.shutdownServer()
에는 다음 구문이 있습니다.db.shutdownServer({ force: <boolean>, timeoutSecs: <int> }) 이 메서드는 다음과 같은 필드를 사용합니다.
필드설명선택 사항.
mongod
또는mongos
강제로 종료하려면true
로 지정합니다. 강제 종료는mongod
또는mongos
에서 진행 중인 모든 작업을 중단하며, 예기치 않은 동작을 초래할 수 있습니다.force
을(를) 사용하여 진행 중인 인덱스 빌드를 일시 중지했다가 다시 시작할 수 있습니다. 자세한 내용 은 복제본 세트 멤버에 대한db.shutdownServer()
를 참조하세요.선택 사항.
MongoDB 5.0부터
mongod
및mongos
는 종료하기 전에 진행 중인 모든 데이터베이스 작업이 완료될 수 있도록 정지 기간을 입력합니다.mongod
프라이머리가 종료 요청을 받으면 프라이머리는 다음을 수행합니다.세컨더리로 단계를 낮추려고 시도합니다.
강등이 실패하는 경우
휴지기에 들어갑니다.
남은 모든 데이터베이스 작업을 종료합니다.
종료합니다.
mongod
세컨더리 또는mongos
종료 요청의 경우, 종료가 요청된 후 정지 기간이 입력됩니다.정지 기간은 다음과 같이 지정됩니다.
또는 명령이 실행된
shutdown
db.shutdownServer()
경우timeoutSecs 필드 또는shutdownTimeoutMillisForSignaledShutdown
서버 매개 변수(SIGTERM
신호가mongod
로 전송된 경우) 또는SIGTERM
신호가mongos
로 전송된 경우mongosShutdownTimeoutMillisForSignaledShutdown
서버 매개변수입니다.
클라이언트는 종료되는
mongod
또는mongos
에 대해 새 연결을 열 수 없습니다.timeoutSecs는 초 단위로 기간을 지정합니다. 기본값은 다음과 같습니다.
MongoDB 5.0에서 15초.
MongoDB 5.0 이전 버전에서는 10초입니다.
mongod
는 다음과 같이 timeoutSecs을 사용합니다.현재 노드가 복제본 세트의 프라이머리 노드인 경우,
mongod
는 프라이머리 노드가 물러나기 전에 투표 선택 가능 노드가 따라잡을 수 있도록 timeoutSecs 필드에 지정된 시간(초)까지 대기합니다. 따라잡기 시간에 대한 자세한 내용은 복제 지연을 참조하세요.프라이머리에서 물러난 후 현재 노드가
SECONDARY
상태인 경우, 기존 작업을 완료할 수 있는 정지 기간으로 timeoutSecs에 지정된 남은 시간이 사용됩니다. 새 작업은 다른 복제본 세트 노드로 전송됩니다.
MongoDB 5 부터 시작.0,
mongos
는 기존 작업을 완료할 수 있는 정지 기간으로 timeoutSecs 를 사용합니다. 새 작업은 다른mongos
노드로 전송됩니다. 5 이전의 MongoDB 버전.0,mongos
는 즉시 종료 되며 timeoutSecs 를 사용하지 않습니다.MongoDB 4.4 및 이전 버전에서
mongod
프라이머리 의 경우 timeoutSecs 는 세컨더리가 따라잡을 때까지 프라이머리 가 대기해야 하는 시간(초)입니다. 지정된 시간 내에 세컨더리가 따라잡지 못하면 명령이 실패합니다. 기본값은10
초입니다.
이 작업은 shutdown
명령 주위에 래퍼를 제공합니다.
행동
mongod
Authentication 으로 시작된 의 경우 인증된 연결을 통해 db.shutdownServer()
를 실행해야 합니다. 자세한 내용은 액세스 제어 를 참조하세요.
인증 없이 시작된 mongod
의 경우 로컬 호스트 인터페이스에 연결된 클라이언트에서 db.shutdownServer()
를 실행해야 합니다. 예를 들어mongod
와 동일한 호스트 머신에서 --host "127.0.0.1"
옵션을 사용하여 mongosh
를 실행 .
db.shutdownServer()
복제본 세트 멤버
{ 복제본 세트 멤버가 인덱스 db.shutdownServer()
빌드 와 같은 특정 작업을 실행 중인 mongod
경우 가 실패합니다. force: true 를 지정하여 인덱스 빌드 진행 상황을 디스크에 저장할 mongod
수 있습니다. 는 다시 시작될 때 인덱스 빌드를 복구하고 저장된 체크포인트부터 계속 진행합니다.
복제본 세트 프라이머리, 세컨더리 또는 [mongos] 종료 mongos
MongoDB 5.0부터 mongod
및 mongos
는 종료하기 전에 진행 중인 모든 데이터베이스 작업이 완료될 수 있도록 정지 기간을 입력합니다.
mongod
프라이머리가 종료 요청을 받으면 프라이머리는 다음을 수행합니다.
세컨더리로 단계를 낮추려고 시도합니다.
강등이 실패하는 경우
휴지기에 들어갑니다.
남은 모든 데이터베이스 작업을 종료합니다.
종료합니다.
mongod
세컨더리 또는 mongos
종료 요청의 경우, 종료가 요청된 후 정지 기간이 입력됩니다.
정지 기간은 다음과 같이 지정됩니다.
또는 명령이 실행된
shutdown
db.shutdownServer()
경우timeoutSecs 필드 또는shutdownTimeoutMillisForSignaledShutdown
서버 매개 변수(SIGTERM
신호가mongod
로 전송된 경우) 또는SIGTERM
신호가mongos
로 전송된 경우mongosShutdownTimeoutMillisForSignaledShutdown
서버 매개변수입니다.
클라이언트는 종료되는 mongod
또는 mongos
에 대해 새 연결을 열 수 없습니다.
timeoutSecs는 초 단위로 기간을 지정합니다. 기본값은 다음과 같습니다.
MongoDB 5.0에서 15초.
MongoDB 5.0 이전 버전에서는 10초입니다.
mongod
는 다음과 같이 timeoutSecs을 사용합니다.
현재 노드가 복제본 세트의 프라이머리 노드인 경우,
mongod
는 프라이머리 노드가 물러나기 전에 투표 선택 가능 노드가 따라잡을 수 있도록 timeoutSecs 필드에 지정된 시간(초)까지 대기합니다. 따라잡기 시간에 대한 자세한 내용은 복제 지연을 참조하세요.프라이머리에서 물러난 후 현재 노드가
SECONDARY
상태인 경우, 기존 작업을 완료할 수 있는 정지 기간으로 timeoutSecs에 지정된 남은 시간이 사용됩니다. 새 작업은 다른 복제본 세트 노드로 전송됩니다.
MongoDB 5 부터 시작.0, mongos
는 기존 작업을 완료할 수 있는 정지 기간으로 timeoutSecs 를 사용합니다. 새 작업은 다른 mongos
노드로 전송됩니다. 5 이전의 MongoDB 버전.0, mongos
는 즉시 종료 되며 timeoutSecs 를 사용하지 않습니다.
경고
프라이머리 계정을 강제 종료하면 아직 세컨더리 계정으로 복제되지 않은 모든 쓰기가 롤백될 수 있습니다.
액세스 제어
인증 을 시행하는 db.shutdownServer()
mongod
에서 를 실행하려면 인증된 사용자에게 권한이 있어야 db.shutdownServer()
합니다 . 예를 들어 기본 제공 역할 를 가진 사용자에게는 적절한 권한이 hostManager
있습니다.
예제
종료 mongod
db.getSiblingDB("admin").shutdownServer()
[mongod] 강제 종료 mongod
db.getSiblingDB("admin").shutdownServer({ "force" : true })
더 긴 시간 초과로 프라이머리 mongod
종료
db.getSiblingDB("admin").shutdownServer({ "timeoutSecs": 60 })