Replica Set in MongoDB

ding·2025년 1월 10일

Replica Set은 MongoDB의 데이터 고가용성을 보장하기 위한 핵심 아키텍처 중 하나로, 데이터의 복제와 장애 조치를 제공하는 방식이다. 이를 사용하면 데이터를 여러 노드에 복제하여 데이터 손실을 방지하고, 한 노드에 장애가 발생했을 때 다른 노드가 역할을 승계할 수 있다.

구성 요소

Primary Node

  • 데이터를 읽고 쓸 수 있는 유일한 노드
  • 모든 클라이언트의 쓰기 연산이 primary에서 발생한다.
  • Secondary node에 데이터를 복제한다.
    • Primary는 모든 데이터 변경 사항을 Oplog에 기록하고, Secondary 노드는 이 oplog를 기반으로 데이터를 복제한다.

Secondary Node

  • Primary의 데이터를 복제받는 노드: Primary의 oplog를 비동기적으로 복제함
  • 기본적으로 읽기 전용, Primary에 장애 발생 시 새로운 Primary로 승격될 수 있음
  • readPreference 옵션을 통해 Secondary 노드에서 읽기를 수행할 수 있다.

Arbiter Node

  • 데이터는 저장하지 않고 투표만 수행한다.
  • 주로 홀수 노드 구성을 위해 사용된다.
  • Primary 선출 시 투표권만 행사한다.

동작 방식

데이터 복제

  • Primary 노드는 모든 클라이언트의 쓰기 연산을 처리한다.
  • Secondary 노드는 Primary로부터 oplog(operations log)를 기반으로 데이터를 복제한다.
  • 복제는 비동기 방식으로 이루어진다.

Failover

  • Primary 노드가 다운되거나 네트워크 장애가 발생한 경우, 남은 Secondary 노드들이 투표를 진행한다.
  • 투표를 통해 새로운 Primary 노드를 선출하고, 기존 Primary가 복구되면 Secondary로 전환된다.

Self-Healing

  • Primary 장애 시 자동으로 새로운 Primary를 선출한다.
  • Secondary 노드 중 하나가 Primary로 승격된다.

장점

  • 고가용성: Primary 장애 시 자동으로 장애 복구
  • 데이터 중복 방지 및 보존: 데이터 복제를 통해 데이터 손실 방지
  • 수평 확장: Secondary 노드를 통해 읽기 부하 분산 가능

단점

  • 쓰기 성능 제한: 쓰기는 Primary에서만 가능
  • 복제 지연: Secondary 노드로 복제가 비동기적으로 진행되므로 지연 발생 가능
  • 복잡성 증가: 설정 및 유지보수가 다소 복잡할 수 있음

0개의 댓글