문서 메뉴

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

복제본 세트 기본

프라이머리 노드는 복제본 세트에서 쓰기 연산을 수신하는 유일한 노드입니다. MongoDB는 프라이머리에 쓰기 연산을 적용한 다음 주 노드의 oplog에 연산을 기록합니다. 보조 노드는 이 로그를 복제하여 자신의 데이터 세트에 연산을 적용합니다.

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

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

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

복제본 세트에는 프라이머리 노드가 하나만 있을 수 있습니다. [1] 현재 프라이머리 노드가 사용할 수 없게 되면 투표를 통해 새로운 프라이머리 노드가 결정됩니다. 자세한 내용은 복제본 세트 투표를 참조하세요.

다음 3명으로 구성된 멤버 복제본 세트에서는 프라이머리가 사용할 수 없게 됩니다. 그러면 나머지 세컨더리 중 하나를 새 프라이머리로 선택하는 투표가 트리거됩니다.

새로운 예비 선거의 다이어그램. 두 개의 보조가 있는 3명의 복제본 세트에서는 기본 복제본에 연결할 수 없게 됩니다. 기본 노드가 손실되면 보조 노드 중 하나가 새로운 기본 노드가 되는 선택이 촉발됩니다.
클릭하여 확대
[1] 경우에 따라, 복제본 세트의 두 노드가 일시적으로 주 노드라고 생각될 수 있지만, { w: "majority" } 쓰기 문제를 가지고 쓰기를 완료할 수 있는 노드는 그 중 하나 뿐일 수 있습니다. { w: "majority" } 개의 쓰기를 완료할 수 있는 노드가 현재의 주 노드가고, 다른 노드는 보통 네트워크 파티션으로 인해 아직 강등을 인식하지 못한 이전 프라이머리 노드입니다. 이 경우 이전 프라이머리 노드에 연결한 클라이언트는 읽기 기본 설정 primary를 요청했음에도 불구하고 오래된 데이터를 보게 되며, 이전의 프라이머리 노드에 대한 새로운 쓰기는 결국 롤백됩니다.
← 복제본 세트 멤버