본문 바로가기

카테고리 없음

몽고DB 사용하는 이유 와 ReplicaSet 정리

몽고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