바닥코딩
Replica set 이론 본문
mongoDB의 Replica Set은 동일한 데이터 세트를 유지 관리하는 인스턴스 그룹입니다. 쉽게 말해 데이터베이스를 복제하는 기능으로 데이터베이스를 복제해 같은 정보를 공유하는 기능을 제공합니다.
Replica Set 구성요소
먼저 Replica Set은 세가지 역할로 나누어 집니다
- Primary : 클라이언트에서 DB로 읽기/쓰기 작업을 담당하는 주 데이터 베이스
- Secondary : 프라이머리로부터 데이터를 동기화 받는 데이터 베이스
- Arbiter : 데이터를 동기화하지는 않으며 Replica set의 복구를 돕는 역할
Replica set 내 이 세가지 역할 사이에는 주기적으로10초에 한번씩 ping을 보내 서로의 노드를 확인하는 작업이 이루어 집니다. 이 작업을 MongoDB에서는 Heartbeat라고 부르며, 이 기능을 통해 DB 장애를 파악하게 됩니다.
이 때 장애가 생겼을 경우 투표를 통해 Secondary 중 하나를 Primary로 올리고 장애가 생긴 기존 Primary는 Secondary로 내리는 작업을 수행합니다(투표 과반수를 위해 Replica Set은 홀수로 구성).
Replica Set 구성
1.PSS (Primary + Secondary + Secondary)
PSS는 가장 일반적인 Replica Set 구성입니다 Secondary들은 Primary의 데이터와 로그등을 복사합니다 . 이러한 구성에서 Primary에 장애가 생겼을 경우 투표를 통해 Secondary중 하나가 Primary로 올라가게됩니다.
2.PSA (Primary + Secondary + Arbiter)
두번째로는 Primary 와 Secondary, Arbiter node가 1개씩 구성된 모델입니다. 일반적으로 코스트로 인해 Secondary를 추가할 수 없는 경우 Arbiter를 추가해 투표에만 참여할 수 있는 노드를 구성합니다. Arbiter는 데이터를 가지고 있지 않아 Primary는 될 수 없습니다.
Replica Set이 필요한 이유
앞서 살펴본 mongoDB Replica set 이 필요한 이유로는 크게 3가지가 있습니다.
높은 가용성
앞서 Replica Set 구성에서 알 수 있듯이 Primary의 데이터를 복제하는 Secondary를 두어 Primary에서 장애가 생겼을 경우 투표를 통해 적적한 Primary를 선출하는 과정을 반복합니다. 이러한 동작을 위해 정해진 수의 포트가 항상 실행되도록 관리가 되어지고 서로 간 접근이 활발하게 진행 되며 고가용성을 보여줍니다.
정보의 안전한 보호
Replica Set을 통해 장애 발생시 데이터 복구 방안이 마련되어지기 때문에, 정보를 안전하게 관리할 수 있는 방안이 제시됩니다.
빠른 Read 속도
mongoDB도 타 서비스와 마찬가지로 traffic이 많아지거나 용량이 많아질 수록 성능적으로 저하됩니다. Replica Set의 목적이 물론 Read 속도를 높이는 것이 아니지만, 경우에 따라 Read에 한에 Primary에서 Secondary로 Read 접근 구성을 수정해 Read 속도를 향상 시키는 것이 가능합니다.
'데이터 베이스 > MongoDB' 카테고리의 다른 글
집합 파이프라인 (0) | 2023.08.15 |
---|---|
MongoDB 명령어(Update & Delete) (0) | 2023.08.15 |
MongoDB 배열 (0) | 2023.08.14 |
논리, 비교 Query (0) | 2023.06.18 |
MongoDB 명령어(Read) (0) | 2023.06.18 |