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