Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / /

rs.stepDown()

이 페이지의 내용

  • 설명
  • 호환성
  • 행동
rs.stepDown(stepDownSecs, secondaryCatchUpPeriodSecs)

복제본 세트 의 프라이머리세컨더리 가 되도록 지시합니다. 프라이머리 가 강등된 후에는 자격을 갖춘 세컨더리가 프라이머리 투표 를 치르게 됩니다.

이 메서드는 프라이머리를 즉시 강등시키지 않습니다. 프라이머리가 있는 최신 상태의 electable 세컨더리가 없는 경우 프라이머리는 세컨더리가 이를 따라잡을 때까지 최대 secondaryCatchUpPeriodSecs(기본값 10초)까지 대기합니다. 선택 가능한 세컨더리를 사용할 수 있게 되면 이 메서드는 프라이머리를 강등합니다.

일단 중단되고 나면 원래의 프라이머리가 세컨더리로 바뀌며, stepDownSecs(으)로 지정된 기간 중 남은 시간 동안 다시 프라이머리가 될 수 있는 자격을 잃습니다.

메서드 실행에 대한 자세한 설명은 동작을 참조하세요.

참고

이 메서드는 프라이머리에 대해서만 유효하며 프라이머리가 아닌 노드에서 실행되면 오류가 발생합니다.

중요

Mongo쉬 방법

이 페이지에서는 mongosh 메서드에 대해 설명합니다. 이는 데이터베이스 명령 또는 Node.js와 같은 언어별 드라이버에 대한 설명서가 아닙니다.

데이터베이스 명령에 대해서는 replSetStepDown 명령을 참조하십시오.

MongoDB API 드라이버의 경우 언어별 MongoDB 드라이버 설명서를 참조하세요.

rs.stepDown() 메서드에는 다음과 같은 매개변수가 있습니다.

Parameter
유형
설명

stepDownSecs

숫자

프라이머리를 강등시키는 데 걸리는 시간(초)으로, 이 시간 동안에는 강등된 멤버가 프라이머리가 될 수 없습니다. 숫자가 아닌 값을 지정하면 이 명령이 60초를 사용합니다.

강등 기간은 mongod이(가) 명령을 받은 시점부터 시작됩니다. 강등 기간은 secondaryCatchUpPeriodSecs보다 커야 합니다.

secondaryCatchUpPeriodSecs

숫자

선택 사항입니다. mongod가 선택 가능한 세컨더리가 프라이머리를 따라잡을 때까지 기다리는 시간(초)입니다.

지정된 경우, secondaryCatchUpPeriodSecs가 대기 시간 기본값인 10초를 덮어씁니다.

이 메서드는 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.

  • MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전

  • MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전

rs.stepDown() 메서드는 인덱스 빌드, 쓰기 연산 또는 맵 리듀스 작업과 같이 프라이머리가 스텝다운되는 것을 차단하는 장기 실행 사용자 연산을 종료하려고 시도합니다.

그런 다음 메서드는 세컨더리가 프라이머리와 최신 상태가 될 때까지 최대 secondaryCatchUpPeriodSeconds초(기본값 10초)까지 기다리는 따라잡기 기간을 시작합니다. 롤백을 방지하기 위해 따라잡기 기간 동안 세컨더리가 프라이머리를 최신 상태로 유지하는 경우에만 프라이머리가 단계적으로 강등됩니다.

대기 기간이 끝날 때까지 이 기준에 부합하는 선출 가능한 세컨더리가 없는 경우, 프라이머리가 강등되지 않으며 메서드 오류가 발생합니다.

프라이머리가 성공적으로 강등되면 해당 노드는 메서드를 받은 시점부터 시작된 stepDownSecs 기간의 나머지 기간 동안 프라이머리가 될 수 없습니다.

rs.stepDown() 메서드는 모든 클라이언트 연결을 닫지 않습니다.

참고

rs.stepDown() 메서드가 수신된 시점부터 새 프라이머리가 선출될 때까지, 또는 선출 가능한 세컨더리가 없어 원래 프라이머리가 정상 작동을 재개할 때까지 복제본에 대한 모든 쓰기가 실패합니다.

rs.stepDown()이(가) 실행되면 진행 중이던 쓰기가 종료됩니다. 진행 중인 트랜잭션 역시 TransientTransactionError 때문에 실패하며 전체를 다시 시도할 수 있습니다.

쓰기가 실패하는 최대 기간은 다음과 같습니다.

secondaryCatchUpPeriodSecs (기본 10초) + electionTimeoutMillis(기본 10초)

force 필드를 true로 설정하지 않고 rs.stepDown() 또는 replSetStepDown을 사용하여 프라이머리를 스텝다운하는 경우 스텝다운된 프라이머리는 즉시 투표를 호출할 적격한 세컨더리를 지명합니다.

돌아가기

rs.status

이 페이지의 내용