복제의 개념과 동작원리
복제 - Replication
- 고성능 DB에서 가장 핵심이 되는 기능
- 같은 데이터를 갖는 여러개의 MongoDB 서버를 설계하는 과정
- 고성능 미러링 기능
- 성능과 높은 가용성의 장점 제공
- Master / Slave Replication
- 자동 장애 조치 불가능 (수동)
- 12개 이상의 노드까지 구성 가능
복제의 용도
- 데이터 일관성
- 읽기 분산
- 운영 중 백업
- 오프라인 일괄 작업용 데이터 소스
MongoDB 복제 동작 원리
- 몽고디비의 마스터는 쓰기 연산을 담당
- 일반 마스터 - 슬레이브 방식과 동일하게 쓰기는 마스터에서만 이루어짐
- 몽고디비에서 쓰기 연산이 실행되면 데이터 저장소와 Oplog 영역에 저장
- B+ 트리로 구성된 데이터 저장소는 쓰기 연산을 수행한 결과만을 저장
- Oplog에는 연산 수행과 관련된 명령 자체를 타임스탬프와 함께 저장
- 몽고디비의 슬레이브는 주기적으로 마스터에게 자신의 optime보다 큰 oplog를 요청
- 5초 안에 마스터에서 쓰기 연산이 발생하면 바로 데이터를 응답
- 5초 안에 쓰기 연산이 발생하지 않는다면, 데이터가 존재하지 않는다는 응답을 보내줌
- 슬레이브는 요구한 Oplog 데이터가 존재하면 자신의 Oplog에 데이터를 저장한 후,
바로 마스터에 다시 Oplog를 요청 - 슬레이브는 마스터의 Oplog ( 명령어 )를 가져가 실행시켜 데이터를 얻는다
복제 시스템 구성
슬레이브용 저장 공간 생성
mkdir c:\mongodb\var2
mkdir c:\mongodb\var3
마스터 서버 실행
Mongod --dbpath c:\mongodb\var --port 10000 --master
슬레이브 서버 실행
Mongod --dbpath c:\mongodb\var2 --port 10001 --slave --source localhost:10000
Mongod --dbpath c:\mongodb\var3 --port 10002 --slave --source localhost:10000
마스터 서버에 접속
mongo localhost:10000
테스트 데이터 입력
> use test;
> db.users.insert ( {name:"Shin", phone:'010-1111-1111'} );
> db.users.find();
첫 번째 슬레이브 서버 접속
mongo localhost:10001
첫 번째 슬레이브 저장 데이터 확인
> use test;
> db.users.find();
> exit;
'DataBase > MongoDB' 카테고리의 다른 글
MapReduce 개념 살펴보기 (0) | 2021.10.14 |
---|---|
MongoDB의 리플리카셋으로 장애 대응방법 배우기 (0) | 2021.10.12 |
MongoDB의 샤딩에 대해 알아보기 (0) | 2021.10.06 |
MongoDB의 Index 기능 배우기 (0) | 2021.10.05 |
MongoDB 쉘을 이용하여 저장된 데이터를 수정하거나 삭제하기 (0) | 2021.09.24 |