1. How does replication work in MongoDB?
복제
- 데이터를 여러 복제본으로 만들어서 물리적으로 분리된 서버들에 보관하는 것
Replica Set
- 하나의 Primary 노드 (쓰기 연산)
- 여러 Secondary 노드 (읽기 연산)
Election
- Primary 노드가 다운되면, 선거를 통해 Secondary 노드 중 하나가 새로운 Primary 노드로 승격됨
- 장애 났던 Primary 노드가 복구 되면, Secondary 노드로 복귀 및 동기화를 수행함
2. How do I enable replication in MongoDB
사전 준비
- 서버 3대 이상 필요
- 각 서버는 기본 포트(27017)로 통신 가능해야 함
- private ip로 서로 통신 가능해야 함 (외부 접근 차단)
복제 시작
- mongod 실행
- Replica Set 초기화 (Primary 노드에서 실행)
- Replica Set 확인
명령어) mongod
더보기
mongod --auth --replSet "rs0" --bind_ip localhost,<서버호스트명 또는 IP>
- --replSet "rs0": 복제 세트 이름 설정
- --bind_ip: 외부에서 접근 가능한 IP 또는 호스트 지정
명령어) 초기화
더보기
rs.initiate({
_id : "rs0",
members: [
{ _id: 0, host: "mongodb0.example.net:27017" },
{ _id: 1, host: "mongodb1.example.net:27017" },
{ _id: 2, host: "mongodb2.example.net:27017" }
]
})
명령어) 복제 확인
더보기
rs.conf()
구체적
rs.status()
3. How does MongoDB detect replication lag?
복제 지연
- Primary 노드에서 데이터가 업데이트된 후, 해당 변경 사항이 Secondary 노드로 복제되기까지 걸리는 시간 차이
- 지속될 경우 문제가 생길 수 있음
명령어) 복제 지연 확인
더보기
rs.printSecondaryReplicationInfo()
예시) 복제 지연 확인
더보기
source: mongo-secondary-0:27017
{
syncedTo: 'Tue Aug 05 2025 14:44:19 GMT+0000 (Coordinated Universal Time)',
replLag: '0 secs (0 hrs) behind the primary '
}
---
source: mongo-secondary-1:27017
{
syncedTo: 'Tue Aug 05 2025 14:44:19 GMT+0000 (Coordinated Universal Time)',
replLag: '0 secs (0 hrs) behind the primary '
}
- syncedTo: Secondary가 Oplog 복제를 완료한 시간
원인
원인 | 설명 | 해결방법 |
Latency |
노드 간의 연결 속도가 느리거나 패킷 손실 발생 시 지연될 수 있음
|
진단: ping, traceroute
|
Disk Throughput | - Secondary가 데이터를 디스크에 flush 할 경우 - 네트워크 너머에 있는 디스크 접근하는 구조일 경우 자주 발생 |
진단: vmstat, iostat
|
Concurrency |
Primary에서 오래 걸리는 작업이 있으면 Secondary가 복제를 따라잡기 어려움.
|
분석: slow query, DB profiler
|
Write Concern 설정 문제 |
너무 많은 쓰기 작업이 Primary에 몰릴 경우, Secondary가 따라오지 못함.
|
writeConcern: "majority"
주요 노드에 안전하게 복제되도록 보장 |
4. What is the difference between replication and sharding?
구분 | ✅ Replication (복제) | ✅ Sharding (샤딩) |
동작 | Primary의 데이터를 Secondary로 그대로 복사 |
데이터를 샤드 키 기준으로 나눠 여러 서버에 분산 저장
|
목적 | - 장애 발생 시 백업 기능 - 데이터 가용성 확보 |
수평 확장을 통한 성능 향상 |
데이터 구조 | 모든 서버가 동일한 데이터 전체를 가짐 | 각 서버는 데이터의 일부(샤드)만 가짐 |
5. Does replication affect latency?
항목 | 설명 | 특징 |
쓰기 지연 | 큰 영향 없음 | 기본적으로 Primary 서버에 쓰기가 이루어지기 때문 |
읽기 지연 |
- Primary에서 읽으면 변화 없음.
- Secondary에서 읽도록하면 지연이 감소할 수 있음 |
지리적으로 가까운 노드에서 데이터를 제공할 수 있으므로
|
일관성 문제 |
eventual consistency를 감수해야 함
|
Secondary는 Primary보다 약간 늦게 동기화됨
|
출처
'Database > MongoDB' 카테고리의 다른 글
[몽고DB 완벽 가이드] 8. 트랜잭션 (1) | 2025.04.30 |
---|---|
[몽고DB 완벽 가이드] 7. 집계 프레임워크 (1) | 2025.04.30 |
[몽고DB 완벽 가이드] 6. 특수 인덱스와 컬렉션 유형 (0) | 2025.04.30 |
[몽고DB 완벽 가이드] 5. 인덱싱 (0) | 2025.04.29 |
[몽고DB 완벽 가이드] 4. 쿼리 (1) | 2025.04.28 |