참고
https://www.mongodb.com/docs/manual/
https://cinema4dr12.tistory.com/428
https://rastalion.me/mongodb-replica-set-%EA%B5%AC%EC%84%B1%ED%95%98%EA%B8%B0/
https://dev-cini.tistory.com/36
https://coding-start.tistory.com/275
Mongodb는 고가용성과 대용량 분산처리를 위하여 샤딩과 레플리카(복제)를 모두 적용한다.
샤딩
데이터를 여러 서버에 분산해서 저장하고 처리 할 수 있도록 하는 기술이다.
MongoDB에서 샤딩을 적용하기 위해서는 샤드 클러스트를 구축해야 한다.
샤드 클러스터
구조
Mongos
라우터 역할을 하는 서버로 Config Server를 이용하여 애플리케이션이 MongoDB에 접근 할 수 있도록 한다.
쿼리 수행에 있어서 Proxy 역할을 하여 사용자의 쿼리 요청을 어떤 샤드로 전달할지 저장하고 각 샤드로부터 받은 쿼리 결과 데이터를 병합해서 사용자에게 돌려주는 역할을 한다.
별도의 데이터를 가지지 않는다.
Shard
데이터 저장 서버(Mongod) 의 집합으로 Shard는 Replicat set이 될 수 있다.
Config
클러스터에 대한 메타 데이터 및 구성 설정 저장하는 서버로 파티션된 데이터의 위치와 샤드 위치 저장 및 조회한다. 샤드 클러스터에서는 단 하나의 레플리카 셋만 존재 할 수 있습니다.
레플리카셋
언제든지 장애는 발생 할 수 있다고 가정하여 여러 개의 동일한 데이터베이스를 만들어서 데이터를 백업해두는 방식으로 여러 서버에서 데이터베이스 서버를 분산하고 관리하는 구조로 서비스의 지속성, 안전성을 제공 할 수로 설정 할 수 있다.
클라이언트가 메인 서버가 아닌 복제된 서버에 Read 요청을 하도록하여 메인 서버의 부하를 낮출 수 있다.
투표를 통해서 Primary 서버를 선출하기 때문에 홀수로 노드 수를 늘리는 것을 권장하고 Arbiter-Primary-Secondary 서버가 세트 (PSA구조) 가 되어서 구성 되는 것이 좋다.
하나의 구역에 구성하는 것보다는 서로의 환경에서 독립하여 여러 지역으로 분산하는 것이 좋다.
Arbiter
각 인스턴스 상태 지속적으로 확인하고 Primary Server 선출하는 역할로 직접적으로 데이터 저장 기능을 가지지 않는다.
Primary (Master)
데이터 기록 권한을 가진 서버.
Secondary (Slave)
Primary Server가 죽었을 때를 대비하여 복제된 서버로 장애 발생 시 Primary 서버로 역할이 전환 될 수 있고 N개 존재 할 수 있다.
Wrtie 기능은 수행 할 수 없지만 Read 작업을 수행 할 수 있다.
'DataBase' 카테고리의 다른 글
Mysql "Too many connections" / DB 접속 너무 느릴 때 임시 방편, Mysql variables 개념 (0) | 2022.08.04 |
---|---|
[DB/Oracle] 오라클 계정 비밀번호 만료기간 해지 및 변경, 계정 락 해제 (0) | 2020.06.13 |
댓글