2013-06-17 2 views
2

я нашел в mongos журналах:Движение балансировки Mongodb не удавалось: кусок слишком большой, чтобы двигаться. Но это не

[Balancer] balancer move failed: { chunkTooBig: true, estimatedChunkSize: 33972400, ok: 0.0, errmsg: "chunk too big to move" } from: rs2 to: rs3 chunk: min: { h: 3074457345618258600 } max: { h: 3074457345618258600 } 

~ 30 Мегабайт. Но кусок не больше, чем определенный размер куска:

mongos> use config 
switched to db config 
mongos> db.settings.find({_id:"chunksize"}) 
{ "_id" : "chunksize", "value" : 64 } 

Может ли кто-нибудь мне помочь? Спасибо!

+0

Вы изменили ваш раздел в любой точке? –

+0

Я точно не помню, но это возможно. –

+1

в командной строке оболочки mongos вы можете перейти в конфигурацию db (через «use config») и посмотреть коллекцию db.chunks, чтобы увидеть, был ли этот фрагмент помечен как «jumbo» - если размер фрагмента был намного меньше что могло произойти при неудачной миграции. db.chunks.find ({jumbo: true}) выберет все фрагменты с надписью «jumbo» - вы также можете проверить журналы mongos (если их не так уж много), чтобы увидеть, что могло произойти. –

ответ

1

Похоже, как известно старая ошибка https://jira.mongodb.org/browse/SERVER-9365

У меня есть 30Mb куски около 280K Docs. И монго не может переместить его, потому что он содержит более 250001 документов и заполняет ошибку «кусок слишком большой, чтобы двигаться». У нас есть ситуация, что чук не большой, чтобы расколоться, и «не малым» двигаться.

Я воспроизвел это локально. Я создал коллекцию из 1 блока с 36b docs (8.58MiB за кусок). Если docs 250001 или меньше, кусок перемещается в ручном режиме, как ожидалось. Если docs 250002 или более, я получил сообщение об ошибке «слишком большой кусок для перемещения». Размер блока в настройках 64 МБ.

Работа Arround:

Если планируется использовать коллекцию с небольшим Docs - предварительно разделенной коллекцией так, чтобы документы были меньше, чем 250K.