Replica Set의 기본 구조
프로덕션 환경의 표준 Replica Set 배포는 3개 멤버로 구성되며, 3개 데이터 보유 멤버(Primary-Secondary-Secondary) 또는 비용 제약 시 2개 데이터 멤버와 Arbiter로 구성됩니다. Primary는 유일하게 쓰기 작업을 처리하는 멤버이며, Secondary는 Primary의 데이터 복사본을 유지하면서 Primary의 Oplog에서 작업을 비동기적으로 적용합니다.
데이터 동기화 메커니즘
MongoDB는 초기 동기화와 지속적 복제의 두 가지 동기화 형태를 사용합니다. Oplog는 Primary에 적용되는 모든 쓰기 작업을 기록하는 특별한 Capped Collection이며, Secondary는 이를 지속적으로 추적하여 동일한 작업을 적용합니다. Oplog 윈도우는 가장 최신과 가장 오래된 타임스탐프 간 시간 차이로, Secondary가 Primary와의 연결을 잃었을 때 복제로 복구할 수 있는 시간을 결정합니다.
자동 Failover와 선거
Secondary가 Primary와의 연결을 기본값 10초 이상 잃으면 선거가 자동으로 트리거되어 남은 Secondary 중 하나가 새 Primary로 선출됩니다. 기본 설정 하에서 새 Primary를 선출하는 데 소요되는 중앙값은 12초 이내입니다. 멤버 우선순위는 선거의 시기와 결과에 영향을 미치며, 우선순위가 높은 Secondary가 더 빨리 선거를 호출하고 당선될 가능성이 높습니다.
투표 및 확장성
Replica Set은 최대 50개 멤버를 가질 수 있지만 투표 멤버는 최대 7개이며, 7개 투표 멤버 초과 멤버는 비투표 멤버여야 합니다. 투표 멤버의 홀수 개 유지를 권장하여 안정적인 쿼럼 형성을 보장합니다.