2013-08-08 3 views
0

Я начал сталкиваться с проблемой несколько дней назад, когда данные, поступающие в монго, больше не распространяются по кластеру. Все, кроме очень небольшого количества данных, поступает в основной осколок базы данных, даже если ключ осколка не изменился. Клавиши осколка представляют собой суммы MD5 другого поля документа, похожие на хэшированные ключи осколка в v2.4 монго, поэтому должно быть более чем достаточно изменчивости для распыления документов по трем осколкам. Сейчас мы работаем 2.0.5.Mongodb 2.0.5 sharding больше не сбалансирован

Я не могу найти что-либо в базе данных конфигурации, которая указывала бы, почему документы идут только на основной. Каждый день мы создаем новую коллекцию и записываем в нее около 40 миллионов документов. Я проверял, что они оштукатурены, и балансир медленно перемещает куски из основного, но недостаточно быстро, чтобы не отставать от скорости записи.

Каждый сервер, который пишет в mongo, имеет свой собственный экземпляр mongos, и есть несколько экземпляров mongos для процессов, которые читают данные. Общее число, которое у нас работает, немного больше 25. Может ли количество экземпляров mongos вызвать эту проблему? Кажется, мне нужно вручную определить диапазоны для осколков, но это кажется мне проблематичным. Я хотел бы сохранить автоматическое ошпаривание на месте. Где в базе данных config находится эта информация? Можно ли узнать, какие диапазоны используются экземплярами mongos для автоматического очертания?

ответ

0

Основываясь на том, что я нашел, новая созданная коллекция, которая очерчена, не будет иметь никаких кусков, направленных на осколки, отличные от основного. Только после того, как фрагменты будут разделены, данные будут направлены в другом месте. Для вставки большого объема в Mongo это может вызвать проблемы. Возможно, что увеличение общего объема не позволяет системе правильно распределять данные, так как предыдущие коллекции могли правильно переходить через три осколка.

Решение состоит в том, чтобы предварительно разбить коллекцию на основе знания ключа (ов) осколка. How to define sharding range for each shard in Mongo? дает информацию о том, как это сделать должным образом.

0

Не бросайте коллекции перед использованием.

+0

Мы оставляем коллекции только тогда, когда они не нужны. Коллекции создаются с конфигурациями индексов и осколков до ввода данных в них. – cischmidt

Смежные вопросы