2013-08-05 2 views
0

Я использую python, scrapy, MongoDB для моего проекта веб-скрепок. Я ежедневно чинил данные 40 ГБ. Есть ли способ или параметр в файле mongodb.conf, чтобы MongoDB нормально выходил, прежде чем применять блокировку записи на db из-за полной ошибки диска?Mongodb обычный выход перед применением блокировки записи

Потому что каждый раз, когда я сталкиваюсь с этой проблемой, полная ошибка диска в MongoDB. Затем мне нужно вручную переустановить MongoDB, чтобы удалить блокировку записи из db. Я не могу запустить команду восстановления и компактную команду в базе данных, потому что для запуска этой команды мне также требуется свободное пространство.

ответ

0

В некоторых случаях MongoDB не обрабатывает ошибки при заполнении диска, но вам не нужно удалять, а затем повторно устанавливать MongoDB для удаления файла блокировки. Вместо этого вы можете скачать mongod.lock. До тех пор, пока вы включите журналирование, ваши данные должны быть хорошими. Конечно, в этот момент вы не можете добавить больше данных в базы данных MongoDB.

Вам, вероятно, не понадобится repair, а compact поможет только в том случае, если вы действительно удалили данные из MongoDB. compact делает не сжимает данные, поэтому это полезно, только если вы действительно удалили данные.

Постоянное добавление, а затем удаление позже может привести к фрагментации и большому количеству дискового пространства для использования. Вы можете предотвратить это, главным образом, используя userPowerOf2Sizesoption, который вы можете установить в коллекциях. compact смягчает это, также переписывая файлы базы данных, но, как вы сказали, для этого вам нужно свободное место на диске. Я бы посоветовал вам также добавить мониторинг, чтобы предупредить вас, когда ваш размер данных достигнет 50% от вашего полного дискового пространства. В этом случае есть еще много времени, чтобы использовать compact для восстановления неиспользуемого пространства.

+0

Удаление файла-дозатора mongod.lock в моем случае появляется снова. –

+0

Как добавить контрольный сервис для mongodb, потому что все мои работы по очистке выполняются cronjob –

+0

Он появляется снова, если MongoDB запущен, конечно. Он должен это делать. Для мониторинга вы можете использовать что-то вроде этого: http://www.cyberciti.biz/tips/shell-script-to-watch-the-disk-space.html - но это выходит за рамки вашего вопроса. – Derick

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