2012-03-29 2 views
2

У меня есть коллекции с ключом осколка и индексом endabled. Но когда я запускаю балансировку, куски не перемещаются для этих коллекций, где другие куски коллекции движутся так, как ожидалось, к другим машинам. Из этой коллекции перемещается только один кусок.mongo DB Балансировка

ответ

2

В настоящее время (это изменится в ближайшем будущем), балансир начнет перемещать куски только при наличии достаточного дисбаланса (8 или более). Если количество блоков больше, чем это, тогда движение не будет. Количество блоков зависит от максимального размера блока (64 МБ на момент написания этого в 2.0.х) и количества записанных данных. Сплит срабатывает каждый раз, когда определенное количество данных записывается в кусок.

Итак, если вы не добавляете данные в коллекцию, или данные не очень большие, может потребоваться некоторое время, чтобы создать необходимое количество кусков, чтобы запустить балансировочный раунд.

Вы можете взять это в свои руки вручную Расщепление и перемещение кусок:

http://www.mongodb.org/display/DOCS/Splitting+Shard+Chunks

Или, вы можете добавить больше данных, чтобы вызвать расколы и балансир, в конечном счете удар и двигаться ломти вокруг для вас.

+0

Мои данные очень велики с точки зрения 10 миллионов миллионов записей, каждая запись насчитывает около 3000 символов. И когда я сделал printShrdingStatus, он показывал, что у одной машины есть 2500 кусков, а на других машинах есть 1 кусок, каждый – Sandeep

+0

Есть ли ошибки в журналах? должно быть, если балансир не может переместить куски (слишком большой кусок - общий). Вы можете попробовать несколько ручных движений, посмотрите, работают ли они. –