mongodb shard 제거하기 ( remove )

2021. 4. 22. 11:06mongodb

반응형

 

음, 오늘은 몽고디비 구성된 샤드를 제거하는 방법을 배워보겠다.

 

요즘 계속 몽고디비에 관련된 글만 쓰는거 같다.

 

몽고 덕후가 되어 가고 있다...

 

현재 구성된 몽고디비의 구성도는 아래와 같다.

 

몽고디비 구성도

 

몽고디비 설정을 하고 싶다면 내가 블로그에 작성한 글을 찾아보면 된다. 

 

일단 주의할 점을 먼저 말을 하겠다.

 

운영중에 해당 명령어를 날리면,,, 큰일 난다,,,,

 

결론부터 말하자만,

 

샤드가 제거된 서버의 데이터가 제거되지 않는 모든 서버로 이관이 된다. 

 

쉽게 말해, 위 그림 shard 03이 샤드에서 제거되면, 

 

shard 01, shard 02로 데이터가 마이그레이션이 자동으로 진행된다.

 

즉, 이 과정에서...성능 저하가 발생해 운영이 불가능해진다.. ㅠ-ㅠ

 

뭐 그래도 샤드 제거가 성공만 하면,

 

데이터의 유실없이 재운영이 가능하다. 

 

그냥 샤드를 풀면 어떻게 될까 하는 내 호기심에...

 

개발서버의 샤드를 풀어보았다 ㅎㅎㅎ

 

그래서 이러한 호기심을 가지고 있는 분들을 위해,

 

한번 그 과정을 오늘 정리해 볼까 한다.

 

1. mongos에 접속한다.

 

$ mongo localhost:20000

 

2. shard 구성을 확인한다.

 

$ use config

$ db.shards.find( { } )

 

해당 명령어를 쓰면 아래의 화면 처럼 나온다.

 

shard 구성도 

 

3. 샤드를 제거한다. ( 내가 제거할 샤드는 rs3, 즉, shard 03이다 ) 

 

$ use admin

$ db.runCommand( {removeShard : “rs3”} )

 

해당 명령어를 쓰면 아래의 화면 처럼 나온다.

 

샤드 제거 명령어

 

4. 샤드 제거를 하면, 샤드의 상태 확인 ( 확인 안해도 됨 )

 

$ use config

$ db.shards.find( { } )

 

해당 명령어를 쓰면 아래의 화면 처럼 나온다.

 

샤드 상태 확인

샤드의 상태가 draining을 바뀌었다. 

 

5. 샤드 제거 되는 과정 확인 ( 샤드 제거 동일한 명령어를 날려본다. ) 

 

$ use admin

$ db.runCommand( {removeShard : “rs3”} )

 

샤드 제거 동일한 명령어를 날려본다.

 

그럼 아래 그림처럼 chunks 가 보인다.

 

chunks 가 0이 될때까지 기다린다.

 

chunks 사이즈 확인

5-1 샤드 제거 되는 과정 확인 ( 샤드 제거 동일한 명령어를 날려본다. ) 

 

$ use admin

$ db.runCommand( {removeShard : “rs3”} )

 

chunks 사이즈가 0이 되면 아래 그림처럼 chunks( 숫자 ) 가 사라진다.

 

chunks 사이즈 0이 되는 순간

 

이러면 샤드는 제거되거, 제거된 샤드의 데이터가 모두 shard 01, shard 02로 이관 된거다.

 

이 순간 부터 운영이 가능하다!

 

6. 제거 된 샤드 확인

 

$ use config

$ db.shards.find( { } )

 

샤드 구성 확인

 

짜라란~ 샤드가 제거되었다.

 

하지만 이 과정은 매우 느리다...

 

mongodb 사이트에 들어가도 이 과정이 매우 느리다고 써있다.

 

그러니 신중하게 설정해야 한다.

 

제거된 rs3 ( shard 03 ) 에는 여전히 과거 데이터가 남아있다.

 

해당 데이터는 스스로 지워주면 된다.

 

즉, 오늘의 요약은 아래 그림과 같다.

 

 

샤드 제거시 데이터 마이그레이션 진행이 됨

 

샤드를 제거하면~ 

 

데이터가 제거되지 않는 서버로 자동 이관된다.

 

끝!!!

반응형

'mongodb' 카테고리의 다른 글

MongoDB Spark Connection 테스트  (0) 2021.07.15
Mongodb Shard 추가 및 주의사항  (0) 2021.04.22
몽고디비(mongodb) 샤드(shard) 설정  (0) 2021.04.19
MongoDB Replicaset 설정  (0) 2021.04.14
MongoDB SQL Union All ($facet) 하는 방법  (0) 2021.04.11