mongo 클러스터가 모두 존재한다는 전제하에 설명한다.(mongo router, mongo configuration, mongo nodes 들이 있다는 전제) 

 

1. mongo master 혹은 mongo configuration 에서

use config
db.settings.save( { _id:"chunksize", value: <바꾸고 싶은 청크 사이즈 mb 단위> } )

2. mongo master 에서

sh.enableSharding("<샤딩시킬 데이터베이스 이름>")
sh.shardCollection("<샤딩시킬 데이터베이스 이름>.<샤딩시킬 컬렉션 이름>", {_id:1})

*참고로 뒤에 {_id:1} 말고 hash 기법 등으로 바꿔도 된다. (참고)

 

이후에 mongoimport 를 통해 위에서 적용한 데이터베이스.컬렉션 에 저장한다.

 

만약 다양한 청크 사이즈로 데이터를 넣고 싶다면

 

데이터를 mongoimport 하여 넣기 전에 1, 2 번을 다시 수행한다.

 

 

 

청크 상태 확인하는 법

mongo master 에서

sh.status()

혹은

use <샤딩시킨 데이터베이스 이름>
db.<샤딩시킨 컬렉션 이름>.getShardDistribution()

 

 

 

청크 사이즈를, 예를 들면 8mb로 바꾼 상태에서 데이터를 넣었다고 해서 곧바로 청크들이 mongo nodes에 8mb씩 나눠 들어가진 않는다.

 

왜냐하면 먼저 데이터를 migration 할 때, 복사본을 만들고 그것을 다른 노드로 보내는 방식으로 migration 하는데 이 때 중복된 데이터가 발생하기 때문이고,

 

두번째로 청크 하나에 8mb 데이터를 꽉꽉 눌러담지 않고 그의 반인 4mb로 널널하게 담는 mongoDB의 시스템 때문이다.

 

참고 : 

https://docs.mongodb.com/manual/core/sharding-data-partitioning/#chunk-migration

 

Data Partitioning with Chunks — MongoDB Manual

Sharding > Data Partitioning with Chunks Data Partitioning with Chunks Note MongoDB Atlas implements sharding with best practices baked in, allowing you to scale your cluster through a GUI. The deployment and management of config servers and query routers

docs.mongodb.com

https://docs.mongodb.com/manual/core/sharding-balancer-administration/

 

Sharded Cluster Balancer — MongoDB Manual

Sharding > Sharded Cluster Balancer Sharded Cluster Balancer The MongoDB balancer is a background process that monitors the number of chunks on each shard. When the number of chunks on a given shard reaches specific migration thresholds, the balancer attem

docs.mongodb.com

 

+ Recent posts