자체 관리형 복제본 세트 프로토콜 버전
MongoDB 는 복제본 세트 프로토콜 버전 1 (pv1
)만 지원합니다. pv1
is the default for all new replica sets.
쓰기 보존
w:1
쓰기
pv1
를 사용하면 catchUpTimeoutMillis
를 사용하여 더 빠른 페일오버와 w:1
쓰기 보존 사이에서 우선 순위를 지정할 수 있습니다.
w: "majority"
쓰기
pv1
확인된 w:
"majority"
쓰기의 보존을 보장합니다.
가용성
pv1
는 MongoDB 버전 3.2 이상에서 사용할 수 있으며 모든 새 복제본 세트의 기본값 입니다.
거부권
pv1
거부권을 사용하지 않습니다. 개별 멤버는 특정 투표 에서 후보자에 대해 찬반 투표를 할 수 있지만, 투표 를 일방적으로 거부권(중단)으로 할 수는 없습니다.
동시 프라이머리 검색
일부 상황에서는 복제본 세트의 두 노드가 일시적으로 자신이 주 노드라고 생각할 수 있지만, { w:
"majority" }
개의 쓰기 우려로 쓰기를 완료할 수 있는 노드는 최대 한 개뿐입니다. { w: "majority" }
개의 쓰기를 완료할 수 있는 노드가 현재의 주 노드이고, 다른 노드는 보통 네트워크 파티션으로 인해 강등된 것을 아직 인식하지 못한 이전의 주 노드입니다. 이 경우 이전 주 노드에 연결한 클라이언트는 읽기 기본 설정 primary
를 요청했음에도 불구하고 오래된 데이터를 보게 되며, 이전의 주 노드에 대한 새로운 쓰기는 결국 롤백됩니다.
pv1
텀 의 개념을 사용합니다. 이를 통해 동시 프라이머리를 더 빠르게 탐지하고 짧은 시간 내에 성공적인 투표를 여러 번 달성할 수 있습니다.
백투백 투표
pv1
사용 가능한 가장 높은 priority
를 가진 2차자가 투표를 호출하도록 "최선의 노력"을 시도합니다. 이로 인해 우선 순위가 더 높은 자격 있는 멤버가 투표를 호출할 수 있으므로 연속 투표가 이루어질 수 있습니다.
그러나 pv1
의 경우:
우선 순위 투표는 우선 순위가 높은 노드가 현재 기본 노드로부터 10초 이내에 있는 경우에만 수행되도록 제한되었습니다.
중재자는 후보와 동등하거나 그 이상의 우선순위를 가진 건전한 프라이머리를 발견하면 선거에서 반대표를 던집니다.
double 투표
pv1
한 멤버의 투표 요청에서 이중 투표를 방지합니다. 이는 텀을 사용하여 달성됩니다.