#dokydoky

mongodb 빠르게 훑기 2 - replication, sharding 본문

Programming

mongodb 빠르게 훑기 2 - replication, sharding

dokydoky 2014. 6. 2. 15:14

"mongodb 빠르게 훑기 1 mongodb란" http://dokydoky.tistory.com/432

위 링크와 이어지는 글입니다.


1. Replication (복제)

Replication은 가용성을 높여준다. 다른 DB서버에 여러 복제본을 만들어놓음으로써 싱글서버에서의 데이터 손실을 방지해준다. 또한, hardware failure나 service interruption에 대해서도 복구해준다. 


                                                     (그림 출처 : http://docs.mongodb.org)


Replica set은 mongod 데몬 인스턴스들의 그룹으로 Primary와 Secondary가 있다.

Primary는 오직 하나만 존재하며 Client로부터 모든 쓰기 작업을 받는다.(쓰기작업은 Primary만 가능).
읽기 작업은 디폴트로 primary에서 수행하지만, read preference를 지정하면 secondary에게
읽기 요청을 할 수 있다.

primary는 replica를 지원하기 위해 data set들의 모든 변화로그를 oplog에 기록한다.
secondary들은 primary의 oplog를 복제하고, 그들 각각의 data set에 oplog의 행위들을 적용시킨다.
이런 방식으로 secondary들은 primay의 data set을 동일하게 유지시킨다.


                                                           (그림 출처 : http://docs.mongodb.org)


primary, secondary들은 2초에 한 번씩 heartbeat를 확인하며, primary가 10초 이상 통신이 안되면
secondary들 중에 새로운 primary를 선출한다.



2. Replication 실습

     1.  실습할 mongod 3개 띄우기.
./mongod --replSet downSet --dbpath ~/data/db --port 10000
./mongod --replSet downSet --dbpath ~/data/db2 --port 10001
./mongod --replSet downSet --dbpath ~/data/db2 --port 10002


     2. mongo shell 에서 replica set 적용
./mongo —port 10000
var config = { _id:'downSet', members:[{_id:0, host:'localhost:10000'}, {_id:1, host:'localhost:10001'}, {_id:2, host:'localhost:10002'}] };
rs.initiate(config)


     3. 적용결과 확인
primary(port 10000)에서 write하면 secondarys(port 10001, 10002)에서 자동으로 db복제된다.
primary를 줄여보면 secondarys들 중에 primary가 선출된다.



3. Sharding

데이터베이스 시스템이 소프트웨어적인 방식으로 대용량 데이터베이스를 분산시켜 처리할 수 있는 방식중 하나가 샤딩(sharding)이다.


                                                                           (그림 출처 : http://mongodb.citsoft.net/?attachment_id=233)


샤딩 시스템에서는 위의 그림과 같이 크게 “응용계층”, “중개자 계층”, “데이터 계층”으로 나뉘어 진다.

  • 응용계층(application) : 한 개의 데이터베이스가 있는 것처럼 모든 데이터접근을 중개자를 통해서 한다.
  • 중개자 계층(mongos) : 샤드 메타 정보(config)를 저장하여, 응용계층에서 전달받은 질의를 분석하여 적절한 명령을 수행하고 그 결과를 응용계층에 반환한다.
  • 데이터 계층(mongod) : mongodb의 데이터 서버



4. 참고자료

http://docs.mongodb.org/manual/core/replication-introduction/
http://docs.mongodb.org/manual/core/sharding-introduction/
http://mongodb.citsoft.net/?page_id=223




Comments