Назад | Перейти на главную страницу

Балансировщик MongoDB

Итак, у меня есть 2 сегментированных кластера по 3 сервера в каждом. Мой mongos работает, мой конфигурационный сервер работает, и я также добавил тестовые данные в 1 из 2 кластеров сегментов. У меня проблемы с переносом этих данных в другой кластер ... Просматривая журналы, я вижу, что [Balancer] нет доступных сегментов для получения фрагментов ... и ... балансировщик распределенных блокировок / Replica4 / 27017 : unlocked ..... maxSize на обоих кластерах - 125, не знаю, на что еще я должен смотреть, чтобы решить проблему .. Любые предложения ???

Также при проверке коллекций я заметил, что он создал базу данных, но все они помечены как (пустые) ... На сегменте 2 все данные существуют ## shard 2 - это узел, на который были загружены данные.

Основной ответ здесь: не используйте maxSize при таком низком значении это не точная настройка. Он полагается на mem.mapped значение для определения размера, и это значение является просто размером всех файлов данных, которые были mmap() призвал их. Фактически, пока вы не получите лучшее представление о ваших отображаемых размерах, я бы рекомендовал полностью отключить его.

Для объяснения: размеры файлов данных для баз данных начинаются с 64 МБ, затем удваивается для каждого последующего распределения по умолчанию максимум 2 ГБ. Объедините это с тем фактом, что MongoDB выделит файл 128 МБ (всего 192 МБ) после того, как вы вставите один фрагмент данных в файл данных размером 64 МБ (по умолчанию MongoDB сохраняет пустой файл данных, предварительно выделенный, чтобы избежать задержек с писать тяжелые нагрузки). Тогда есть вероятность, что у вас есть более одной базы данных (например, журнал операций в локальной базе данных), и вы, по сути, убедились, что с этим пределом 125 МБ все ваши сегменты будут считаться «заполненными» почти сразу.

Удалите параметр maxSize, определите фактическое использование данных, а затем добавьте разумный буфер (по крайней мере, размер пустого файла данных), если вы хотите использовать его в будущем, но имейте в виду, что вы можете снова оказаться в тот же сценарий, если вы используете больше места, чем ожидаете.