Mongodb Shard 추가 및 주의사항

2021. 4. 22. 15:11mongodb

반응형

 

 

금일은 샤드 추가에 대해서 알아보겠다..

 

하면서 당황스러웠으나,,,

 

다행히..시간이 해결해준다는 걸을 알게 되었다..

 

 

오늘 할 작업은 아래와 같다. 

 

 

 

샤드 추가 작업

 

 

 

위에서 말한 당황스러운 일은

 

바로 데이터 건수가 맞지 않는 것이다.

 

시간이 지나니 데이터 건수는 맞아졌다.

 

그럼 샤드 추가하는 방법과 데이터의 건수가 어떻게 변화하는지 알아보겠다. 

 

1. 샤드 구성도 

 

$ use config

$ db.shards.find( { } )

 

그럼 아래 사진처럼 현재 shard 01 만 구성이 되어 있다. 

 

 

 

샤드 상태

 

 

mongos에서 데이터 건수를 확인해 보면

 

$ db.getCollection('test').find({}).count()

 

요래 1000건이 들어있다.

 

 

 

mongos data count

 

 

이걸 다시 shard 01에서 검색을 해보면

 

$ db.getCollection('test').find({}).count()

 

아래 그림 처럼 1000건이다. 

 

 

 

shard 01 data count

 

 

즉, 아무 이상 없다.

 

그럼 shard를 추가해 보겠다. 

 

2. 샤드 추가

 

$ sh.addShard( "rs2/localhost:30002" )

$ use config

$ db.shards.find( { } )

 

해당 결과는 아래와 같다.

 

 

샤드 추가된 상태

 

 

그럼 shard 02의 상태가 어떻게 되는지 확인해 보자.

 

$ db.getCollection('test').find({}).count()

 

shard 02 에 데이터가 480건이 생겼다.

 

데이터가 shard01에서 shard02로 마이그레이션이 진행될걸로 추측된다. 

 

 

 

shard 02 data count

 

 

그럼 shard 01의 건수를 확인해 보자

 

$ db.getCollection('test').find({}).count()

 

으잉?!! shard 01은 아래 그림 처럼 데이터가 1000건 그대로다...

 

 

shard 01 data count

 

 

동공 지진...

 

이럴일이 없어...mongodb가...이런 수 없어...

 

불안한 마음으로 mongos 가서 데이터 건수를 확인해 본다..

 

$ db.getCollection('test').find({}).count()

 

mongos 결과 1480 건다..

 

( 그렇다...shard01 ( 1000건 ) + shard02 ( 480건 ) = 1480 건 인거다...ㅠ-ㅠ) 

 

망했다.. 

 

 

mongos data count

 

 

그래수 분명이 무슨 세팅이 있을거야 하면서 

 

google에서 검색했다..

 

한참을 검색해도 나오지 않았다..

 

절망의 시간이 한참이 지난뒤...

 

혹시나 하는 마음에 다시 mongos에서 다시 count를 조회했다.

 

 

mongos data count

 

 

 

으잉?? 정상으로 돌아왔다..

 

그래서 shard 01에 건수가 1000개인게 지워졌는가 확인해 보았다. 

 

 

shard 01 data count

 

 

shard 01 의 데이터 건수가 1000개 -> 520개로 돌아왔다.

 

즉, 마이그레이션 하는데,,,

 

시간이 걸린것이다..

 

샤드를 지울때도 시간이 필요했는데,,,

 

샤드를 추가할때도 마이그레이션 시간이 걸린다..

 

몽고디비는 휼륭하지만....

 

이렇게 샤드를 추가하거나 하면..

 

일시적으로 데이터 건수가 맞지 않는 문제가 생긴다..

 

샤드를 추가하거나 제거할 때,

 

깊게 고민하고 해야할 듯 하다.

반응형