문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

복제본 세트 멤버

이 페이지의 내용

  • 기본
  • 보조 노드
  • 중재자

MongoDB의 복제본 세트는 중복성과 고가용성을 제공하는 mongod 프로세스 그룹입니다. 복제본 세트의 노드는 다음과 같습니다:

기본
기본 세트는 모든 쓰기 작업을 수신합니다.
보조 노드
보조 노드는 주 노드에서 연산을 복제하여 동일한 데이터 세트를 유지합니다. 보조 노드에는 특수 사용 프로필을 위한 추가 구성이 있을 수 있습니다. 예를 들어, 보조 노드는 투표권이 없거나 우선순위가 0일 수 있습니다.

복제본 세트에 권장되는 최소 구성은 데이터를 보유하는 멤버 3개, 즉 프라이머리 멤버 1개와 세컨더리 멤버 2개가 있는 것입니다. 일부의 경우(예: 프라이머리 및 세컨더리가 있지만 비용 제약으로 인해 세컨더리를 하나 더 추가할 수 없는 경우)에서는 중재자를 포함하도록 선택할 수 있습니다. 중재자는 투표에 참여하지만 데이터를 보유하지 않습니다(예: 데이터 중복성을 제공하지 않습니다).

복제본 세트에는 최대 50개의 노드가 있을 수 있지만, 투표권이 있는 노드는 7개여야 합니다.

다음도 참조하세요.

프라이머리는 복제본 세트에서 쓰기 작업을 수신하는 유일한 멤버입니다. MongoDB는 프라이머리 에 쓰기 작업을 적용한 다음 프라이머리의 oplog 에 작업을 기록합니다. 세컨더리 멤버는 이 로그를 복제하고 자신의 데이터 세트에 작업을 적용합니다.

멤버 셋으로 구성된 다음의 복제본 세트에서 주 노드는 모든 쓰기 연산을 허용합니다. 그런 다음 보조 멤버들이 oplog를 복제하여 데이터 세트에 적용합니다.

기본 멤버로의 읽기 및 쓰기 기본 라우팅을 나타낸 다이어그램
클릭하여 확대

복제본 세트의 모든 멤버는 읽기 연산을 허용할 수 있습니다. 그러나 기본적으로 애플리케이션은 주 멤버에게 읽기 연산을 지시합니다. 기본 읽기 동작 변경에 대한 자세한 내용은 읽기 기본 설정을 참조하세요.

복제본 세트에는 주 노드가 하나만 있을 수 있습니다. [2] 현재 주 노드가 사용할 수 없게 되면 선거를 통해 새로운 기주 노드가 결정됩니다. 자세한 내용은 복제본 세트 선거를 참조하세요.

보조는 데이터 세트의 복사본을 유지합니다. 데이터를 복제하기 위해 보조는 비동기 프로세스에서 주 oplog의 연산을 자체 데이터 세트에 적용합니다. [1] 복제본 세트는 하나 이상의 보조를 가질 수 있습니다.

다음 세 멤버로 구성된 복제본 세트에는 두 개의 보조 멤버가 있습니다. 보조 멤버는 주 멤버의 oplog를 복제하고 자체 데이터 세트에 연산을 적용합니다.

기본 멤버 1개와 보조 멤버 2개로 구성된 3멤버 복제본 세트 다이어그램

클라이언트는 보조 멤버에 데이터를 쓸 수 없지만 보조 멤버의 데이터를 읽을 수 있습니다. 클라이언트가 복제본 세트에 읽기 연산을 지시하는 방법에 대한 자세한 내용은 읽기 기본 설정을 참조하세요.

보조 멤버는 주 멤버가 될 수 있습니다. 현재 주 멤버를 사용할 수 없게 되면 복제본 세트는 보조 멤버 중 어느 것이 새 주 멤버가 될지 선택하기 위한 선거를 진행합니다.

자세한 내용은 복제본 세트 선택을 참조하세요.

특정 목적에 맞게 보조 멤버를 구성할 수 있습니다. 다음과 같이 보조 멤버를 구성할 수 있습니다.

  • 선거에서 주 노드가 되는 것을 방지하여 보조 데이터 센터에 상주하거나 콜드 대기 역할을 할 수 있도록 합니다. 우선순위 0 복제본 세트 멤버를 참조하세요.

  • 애플리케이션이 이를 읽는 것을 방지하여 일반 트래픽과 분리되어야 하는 애플리케이션을 실행할 수 있습니다. 숨겨진 복제본 세트 멤버를 참조하세요.

  • 의도치 않게 삭제된 데이터베이스와 같은 특정 오류로부터 복구하는 데 사용할 수 있도록 실행 중인 "기록" 스냅샷을 유지합니다. 지연된 복제본 세트 멤버를 참조하세요.

[1] 이제 복제본 세트의 세컨더리 멤버는 느린 작업 임계값보다 오래 걸리는 oplog 항목을 기록 합니다. 이러한 느린 oplog 메시지는 다음과 같습니다.
  • diagnostic log에 세컨더리 멤버에 대해 기록합니다.
  • applied op: <oplog entry> took <num>ms 텍스트와 함께 REPL 구성 요소 아래에 기록됩니다.
  • 로그 수준(시스템 또는 구성 요소 수준)에 의존하지 않습니다.
  • 프로파일링 수준에 의존하지 않습니다.
  • slowOpSampleRate 의 영향을 받습니다.
프로파일러는 느린 oplog 항목을 캡처하지 않습니다.

일부 상황(예: 주 복제본과 보조 복제본이 있지만 비용 제약으로 인해 보조 복제본을 추가할 수 없는 경우)에서는 복제본 세트에 중재자를 추가할 수 있습니다. 중재자는 주 노드를 선택하는 선거에 참여하지만, 데이터 세트의 사본이 없으므로 주 노드를 선택하는 선거의 후보가 될 수 없습니다.

중재자는 정확히 1개의 선거 투표권을 갖고 있습니다. 기본적으로 중재자는 0의 우선순위를 갖습니다.

중요

복제본 세트의 주 멤버 또는 보조 멤버를 함께 호스팅하는 시스템에서는 중재자를 실행하지 마십시오.

중재자를 추가하려면 복제본 세트에 중재자 추가를 참조하세요.

중재자를 사용할 때 고려해야 할 사항은 복제본 세트 중재자를 참조하세요.

[2] 일부 상황에서는 복제본 세트의 두 노드가 일시적으로 자신이 주 노드라고 생각할 수 있지만, { w: "majority" }의 쓰기 우려로 쓰기를 완료할 수 있는 노드는 최대 한 개뿐입니다. { w: "majority" }개의 쓰기를 완료할 수 있는 노드가 현재의 주 노드이고, 다른 노드는 보통 네트워크 파티션으로 인해 강등된 것을 아직 인식하지 못한 이전의 주 노드입니다. 이 경우 이전 주 노드에 연결한 클라이언트는 읽기 기본 설정 primary를 요청했음에도 불구하고 오래된 데이터를 보게 되며, 이전의 주 노드에 대한 새로운 쓰기는 결국 롤백됩니다.
← 복제

이 페이지의 내용