복제의 개념과 동작원리

복제 - 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;

 

+ Recent posts