복제본 세트 멤버
MongoDB의 복제본 세트는 mongod
프로세스의 그룹으로, 중복성과 고가용성을 제공합니다. 복제본 세트의 노드는 다음과 같습니다.
- 기본
- 기본 세트는 모든 쓰기 작업을 수신합니다.
- 보조 노드
- 보조 노드는 주 노드에서 연산을 복제하여 동일한 데이터 세트를 유지합니다. 보조 노드에는 특수 사용 프로필을 위한 추가 구성이 있을 수 있습니다. 예를 들어, 보조 노드는 투표권이 없거나 우선순위가 0일 수 있습니다.
복제본 세트에 권장되는 최소 구성은 데이터를 보유하는 멤버 3개, 즉 프라이머리 멤버 1개와 세컨더리 멤버 2개가 있는 것입니다. 일부의 경우(예: 프라이머리 및 세컨더리가 있지만 비용 제약으로 인해 세컨더리를 하나 더 추가할 수 없는 경우)에서는 중재자를 포함하도록 선택할 수 있습니다. 중재자는 투표에 참여하지만 데이터를 보유하지 않습니다(예: 데이터 중복성을 제공하지 않습니다).
복제본 세트에는 최대 50개의 노드가 있을 수 있지만, 투표권이 있는 노드는 7개여야 합니다.
기본
프라이머리는 복제본 세트에서 쓰기 연산을 수신하는 유일한 구성원입니다. MongoDB는 프라이머리에 쓰기 연산을 적용한 다음 프라이머리의 oplog에 연산을 기록합니다. 세컨더리 구성원이 이 로그를 복제하여 해당 데이터 세트에 연산을 적용합니다.
멤버 셋으로 구성된 다음의 복제본 세트에서 주 노드는 모든 쓰기 연산을 허용합니다. 그런 다음 보조 멤버들이 oplog를 복제하여 데이터 세트에 적용합니다.
복제본 세트의 모든 멤버는 읽기 연산을 허용할 수 있습니다. 그러나 기본적으로 애플리케이션은 주 멤버에게 읽기 연산을 지시합니다. 기본 읽기 동작 변경에 대한 자세한 내용은 읽기 기본 설정을 참조하세요.
복제본 세트에는 주 노드가 하나만 있을 수 있습니다. [2] 현재 주 노드가 사용할 수 없게 되면 선거를 통해 새로운 기주 노드가 결정됩니다. 자세한 내용은 복제본 세트 선거를 참조하세요.
보조 노드
보조는 주 데이터 세트의 복사본을 유지합니다. 데이터를 복제하기 위해 보조는 비동기 프로세스에서 주 oplog의 연산을 자체 데이터 세트에 적용합니다. [1] 복제본 세트는 하나 이상의 보조를 가질 수 있습니다.
다음 세 멤버로 구성된 복제본 세트에는 두 개의 보조 멤버가 있습니다. 보조 멤버는 주 멤버의 oplog를 복제하고 자체 데이터 세트에 연산을 적용합니다.
클라이언트는 보조 멤버에 데이터를 쓸 수 없지만 보조 멤버의 데이터를 읽을 수 있습니다. 클라이언트가 복제본 세트에 읽기 연산을 지시하는 방법에 대한 자세한 내용은 읽기 기본 설정을 참조하세요.
보조 멤버는 주 멤버가 될 수 있습니다. 현재 주 멤버를 사용할 수 없게 되면 복제본 세트는 보조 멤버 중 어느 것이 새 주 멤버가 될지 선택하기 위한 선거를 진행합니다.
자세한 내용은 복제본 세트 선택을 참조하세요.
특정 목적에 맞게 보조 멤버를 구성할 수 있습니다. 다음과 같이 보조 멤버를 구성할 수 있습니다.
선거에서 주 노드가 되는 것을 방지하여 보조 데이터 센터에 상주하거나 콜드 대기 역할을 할 수 있도록 합니다. 우선순위 0 복제본 세트 멤버를 참조하세요.
애플리케이션이 이를 읽는 것을 방지하여 일반 트래픽과 분리되어야 하는 애플리케이션을 실행할 수 있습니다. 숨겨진 복제본 세트 멤버를 참조하세요.
의도치 않게 삭제된 데이터베이스와 같은 특정 오류로부터 복구하는 데 사용할 수 있도록 실행 중인 "기록" 스냅샷을 유지합니다. 지연된 복제본 세트 멤버를 참조하세요.
[1] | 이제 복제본 세트의 세컨더리 멤버가 느린 작업 임곗값보다 오래 걸리는 oplog 항목을 기록합니다. 이러한 느린 oplog 메시지의 특성은 다음과 같습니다.
|
중재자
일부 상황(예: 주 복제본과 보조 복제본이 있지만 비용 제약으로 인해 보조 복제본을 추가할 수 없는 경우)에서는 복제본 세트에 중재자를 추가할 수 있습니다. 중재자는 주 노드를 선택하는 선거에 참여하지만, 데이터 세트의 사본이 없으므로 주 노드를 선택하는 선거의 후보가 될 수 없습니다.
중재자는 정확히 1
개의 선거 투표권을 갖고 있습니다. 기본적으로 중재자는 0
의 우선순위를 갖습니다.
중요
복제본 세트의 주 멤버 또는 보조 멤버를 함께 호스팅하는 시스템에서는 중재자를 실행하지 마십시오.
경고
샤드 샤딩된 클러스터 의 샤드에 프라이머리-세컨더리-중재자(PSA) 아키텍처를 사용하면 데이터를 보유한 세컨더리 를 사용할 수 없는 경우 가용성이 손실될 수 있습니다. PSA 클러스터 는 일반적인 복제본 세트 와 다릅니다. 샤드 샤딩된 클러스터 에서 샤드는 작업을 확인하는 데 필요한 나머지 클러스터 구성원에 중재자 가 있는 경우 완료할 수 없는 w: majority
쓰기 고려 (write concern) 고려 작업 을 수행합니다.
중재자를 추가하려면 자체 관리 복제본 세트에 중재자 추가를 참조하세요.
중재자를 사용할 때 고려해야 할 사항은 복제본 세트 중재자를 참조하세요.
[2] | 일부 상황에서는 복제본 세트의 두 노드가 일시적으로 자신이 주 노드라고 생각할 수 있지만, { w:
"majority" } 개의 쓰기 우려로 쓰기를 완료할 수 있는 노드는 최대 한 개뿐입니다. { w: "majority" } 개의 쓰기를 완료할 수 있는 노드가 현재의 주 노드이고, 다른 노드는 보통 네트워크 파티션으로 인해 강등된 것을 아직 인식하지 못한 이전의 주 노드입니다. 이 경우 이전 주 노드에 연결한 클라이언트는 읽기 기본 설정 primary 를 요청했음에도 불구하고 오래된 데이터를 보게 되며, 이전의 주 노드에 대한 새로운 쓰기는 결국 롤백됩니다. |