(MongoDB) Sharding 및 Replication 구성하기 ver3.4

먼저

1. mongod서버
2. config서버
3. mongos가 필요하다

* mongod는 몽고 데이터를 저장하는 곳
* mongos는 request의 라우터 역할을 한다.
* config는 데이터를 저장하지 않고 mongos로 부터 request가 들어왔을 때, 해당 데이터가 어느 샤드에 있는지 알려준다.

* mongos는 config서버의 데이터를 캐쉬한다.



1. mongod 구성


* SHARD1

> --shardsvr --port 27017 --dbpath /data/db --replSet reply_replica (Secondary)
> --shardsvr --port 27012 --dbpath /data/shard1 --replSet reply_replica  (Primary)
> --shardsvr --port 27013 --dbpath /data/shard2 --replSet reply_replica (Secondary)


*SHARD2

--shardsvr --port 28017 --dbpath /data/db1 --replSet shard2_replset (Primary)
--shardsvr --port 28117 --dbpath /data/db1_replica1 --replSet shard2_replset (Secondary)


2. config 서버 구성


> mongod --configsvr --port 27010


이제 샤드를 등록해야 하는데 config서버에 해당 샤드 들을 등록해야하는데
ver3.4부터는 샤드의 replica만 등록 가능하다


그러므로 replica를 만들어야한다.


일단 Primary에 해당하는 27017포트에 해당하는 녀석에 접속한다

> mongo localhost:27017

그 후 rs.initiate()로 replicaSet을 구성한다.

해당 27017포트는 Primary가 된다

그 후 rs.add("Sam-D:27012")로 replica를 추가하면

다음과 같이 뜬다.

1) Primary


2) Secondary


특징으로는 Primary -> Secondary로 chunk가 이동시 WiredTigerEngine임에도 불구하고
Document락이 걸리는 것이 아니라 Collection락이 걸리는 것을 볼 수 있다.

그 이유는 샤딩은 해당 컬렉션에서 이루어지기 때문이다.


3. mongos 서버 등록


mongos --configdb configserver_replset/localhost:47010 --port 1000


4. 샤드된 mongd를 mongos에 등록하기

mongo --host localhost --port 1000


5. 그후 등록된 샤드를 추가하기 위해
mongo --host localhost --port 1000 



<샤딩 결과>




그 후 디비와 컬렉션과 샤드키 추가

> sh.enableSharding("database")
> sh.shardCollection("dabase.collection", {"field" : 1});


댓글

이 블로그의 인기 게시물

(18장) WebSocekt과 STOMP를 사용하여 메시징하기

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬