Docs Menu

복제본 세트 멤버

이 페이지의 내용

MongoDB의 복제본 세트mongod 프로세스의 그룹으로, 중복성과 고가용성을 제공합니다. 복제본 세트의 멤버는 다음과 같습니다.

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

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

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

프라이머리는 복제본 세트에서 쓰기 연산을 수신하는 유일한 구성원입니다. MongoDB는 프라이머리에 쓰기 연산을 적용한 다음 프라이머리의 oplog에 연산을 기록합니다. 세컨더리 구성원이 이 로그를 복제하여 해당 데이터 세트에 연산을 적용합니다.

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

Diagram of default routing of reads and writes to the primary.
클릭하여 확대

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

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

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

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

Diagram of a 3 member replica set that consists of a primary and two secondaries.

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

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

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

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

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

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

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

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

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

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

중요

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

경고

샤딩된 클러스터의 샤드에 프라이머리-세컨더리-중재자(PSA) 아키텍처를 사용하면 데이터를 포함하는 세컨더리 데이터베이스를 사용할 수 없는 경우 가용성이 손실될 수 있습니다. PSA 클러스터는 일반적인 복제본 세트와 다릅니다. 샤딩된 클러스터에서 샤드는 작업을 확인하는 데 필요한 나머지 클러스터 구성원에 중재자가 있는 경우 완료할 수 없는 w: majority 쓰기 고려 작업을 수행합니다.

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

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

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

이 페이지의 내용