2015-09-02 3 views
2

Как восстановить конкретную базу данных mongodb с помощью «pymongo», аналогичную команде оболочки «db.repairDatabase»? Моя цель - вернуть освобожденное пространство в ОС после того, как я отброшу несколько коллекций в БД, что требует ремонта базы данных. Благодаря!ремонт базы данных mongodb с использованием pymongo

+0

Команда 'repair' не должна восприниматься легкомысленно. Это административная команда, которая будет использоваться администратором базы данных *, который - простите мой французский - знает, что он делает. –

+0

Спасибо, я не уверен, как это помогает, на самом деле! В любом случае, для других людей интересно, команда ремонта не подвергается прямому воздействию через pymongo, но может быть выполнена с использованием команды pymongo и передачи «repairDatabase». – Moji

ответ

1

Ремонт не подвергается прямому воздействию через pymongo, но вы можете фактически выполнить его с помощью команды. В этом конкретном случае используйте: db.command("repairDatabase")

+1

Который приходит с некоторыми последствиями. Во-первых, вся база данных будет заблокирована. Во-вторых, по соображениям безопасности у вас должно быть свободное дисковое пространство, равное вашему текущему размеру данных + 2 ГБ. Третий запуск команды будет делать несколько вещей, в том числе копирование документов вперед и назад, а индексы воссоздаются. Это может быть довольно продолжительный процесс *, в течение которого база данных недоступна *. Это * последний * курорт для восстановления дискового пространства IMHO. Принудительная повторная синхронизация элементов набора реплик не требует простоев и выполняет одно и то же. Даже временный набор реплик делает трюк без простоя. –

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