MongoDB를 운용하면서 sh.moveChunk 명령어를 이용하여 수동으로 chunk를 옮기는 경우가 있을 수 있는데,
chunk가 너무 커서 못 옮긴다면서 에러가 나는 경우가 있음.
(참고: shard간 chunk 이동)
mongos> sh.moveChunk('DB_NAME.COL_NAME', {KEY: VALUE}, 'SHARD_NAME')
{
"cause" : {
"chunkTooBig" : true,
"estimatedChunkSize" : 58394175,
"ok" : 0,
"errmsg" : "chunk too big to move"
},
"ok" : 0,
"errmsg" : "move failed"
}
원인은 2가지가 있을 수 있는데,
하나는 실제로 chunk size가 지정된 최대 chunk size보다 큰 경우이다.
에러 메시지에 보면 estimatedChunkSize를 보고 지정된 chunk size보다 큰 지 확인할 것.
근데 위에서 예로 든 에러 메시지처럼,
지정된 chunk size는 64M이고 estimatedChunkSize는 그 이하인데도 저런 메시지가 나오면서 chunk 이동에 실패한다면,
chunk에 들어있는 document의 수를 확인해 볼 필요가 있음.
MongoDB는 chunk migration 시에 chunk에 들어있는 document의 수가 25만개 이상이거나,
최대 chunk size 안에 포함될 수 있는 평균 size의 document 수의 1.3배 이상일 경우,
동일한 에러 메시지와 함께 chunk migration을 실패하게 된다.
chunk size와 document 수 확인 및 chunk split은 아래 링크 참고.
http://bloodguy.tistory.com/820[참고]
http://docs.mongodb.org/manual/reference/limits/#Maximum-Number-of-Documents-Per-Chunk-to-Migrate
'DataBase' 카테고리의 다른 글
[MongoDB] oplog resize (0) | 2015.08.04 |
---|---|
[MongoDB] 사이즈 줄이기 (compact, repairDatabase) (0) | 2015.07.31 |
[MongoDB] config server 교체 (0) | 2015.06.30 |
[MongoDB] ReplicaSet의 arbiter 교체 (0) | 2015.06.30 |
[MongoDB] shard별 최대용량 제한 (set the maximum storage size for a shard) (0) | 2015.05.26 |