2017-02-07 11 views
0

У меня есть проблема с «дампом», а затем «Удалить» большого MongoDB данныхMongoDB, застрял с отвалом и удалять большие данные

дб уже индексировать поля должны запросить

общих данных ~ записей 50й

отфильтрованные данные должны сбросить и удалить ~ 5м

3 сервера:
- MONGO t2.medium

- Сидека IQ t2.small

- ДРУГАЯ SERVER t2.small (многоканальный)

Я бегу cronjob на меньшее время движения. Но для завершения работы требуется слишком много времени, ~ 6-8 часов, а когда он работает, другой сервер не может подключиться к MONGODB, а затем другой-сервер переходит в состояние ухудшения (эластичный переход с докером)

, когда сервер вниз, I проверьте монгостат MONGODB: процессор принимает ~ 95-96%. ДРУГИЕ СЕРВЕРные журналы «не могут подключиться к db».

Пожалуйста, кто-то есть опыт MongoDB, которые помогают мне работать в этом

ответ

1

Может быть, вы должны попробовать другую стратегию. Вы можете попытаться сделать это за несколько шагов. Также вы должны разделить эту задачу на множество небольших заданий. Вы можете запускать эти задания в фоновом режиме с низким приоритетом. На вашем месте я буду делать следующие шаги:

первого шаг:
1) создать временную БД (сбор) для хранения данных для сброса
2) выбрать необходимые данные из оригинальной коллекции небольших порций. Насколько велик? Это зависит от вашего сервера. Например, 5000 записей за раз (ограничение, смещение).
3) сохранить данные во временном db

Теперь вы можете попробовать сбросить временный дБ. Если это не сработает, вы можете попытаться использовать partitioning.

+0

Я думаю, что ваш путь действительно трудно применить. Потому что данные более 5 миллионов записей. Даже я проиндексировал поля для запроса как можно быстрее, но Сортировка и подсчет занимает много времени в файлах mongodb и Split, что неудобно для импорта снова –