몽고DB를 사용하는 이유
- 스키마가 자유롭다.
- HA와 스케일 아웃을 자제적으로 지원해서 확장이 쉽다
- Secondary Index를 지원하는 NoSql언어 (primary index를 제외한 다른 인덱스 종료)
- 다양한 종류의 Index를 제공
- 응답 속도가 빠르다
- 배우기 쉽고 간편하게 개발이 가능
Replica Set
Status | Description |
Primary | Read/Write 요청 모두 처리할 수 있다 Write를 처리하는 유일한 멤버이다 Replica Set에 하나만 존재할 수 있다. |
Secondary | Read에 대한 요청만 처리할 수 있다. 복제를 통해 Primary와 동이한 데이터 셋을 유지한다. ReplicaSet에 여러개가 존재할 수 있다. |
- 각 멤버는 상태값이 존재한다. Primary는 하나만 존재한다.
- Secondary는 읽기에 대한요청만 처리 (복제를 통해 프라이머리와 같은 데이터를 유지함)
- 기본적으로는 Primary에서 읽기 쓰기를 모두 처리함.
- Read Preference옵션을 통해서 읽기 전용으로 쿼리 실행 가능
- read preference를 primary 이외로 설정하기 위해서는 write concern을 보조 데이터베이스 갯수로 설정해야함.
Replica Set Election(Fail-Over)
- 하트비트를 통해 각 멤버는 살아있는지 체크
- 프라이머라가 응답이 없다면 프라이머리를 선출하는 작업을 진행
- 투표를 통해서 프라이머리를 선출하고 과반수를 넘어야 함. 그래서 3대 이상 홀수이상으로 구축을 하는것으로 권장
ReplicaSet Arbiter
- 아비터는 데이터를 들고 있지 않고 프라이머리 선출을 위해서 사용되는 서버
- PSA형태는 권장하지 않는 방식 secondary가 죽으면 프라이머리서버에 모든요청이 몰리게 됨
ReplicaSetOplog
- Oplog를 통해서 세컨다리와 데이터 싱크를 맞춤
- 프라이머리에 데이터 쓰기 요청이 들어오면 각 세컨더리는 비동기적으로 선반영된 멤버의 오피로그를 반영
- 꼭 프라이머리에서만 오피로그를 복제하는것이 아니라 세컨더리에서도 선반영된 멤버에서 오피로그를 반영할 수 있음
OpLog 보는방법
- local db로 이동 use local
- show collections
- db.oplog.rs.find({ns : "sample.item"})
참고 : https://hoing.io/archives/4282
MongoDB Replica Set (1) - Replication 구성
hoing.io
https://velog.io/@euholee/mongodb-read-preference-%EC%84%A4%EC%A0%95
mongodb read preference 설정
기본적으로 몽고디비는 주 데이터베이스(Primary)에서만 쿼리를 수행한다.하지만 read preference mode를 이용하여, read operation의 경우는 설정에 따라 보조 데이터베이스(replication, Secondary Database)에서도
velog.io