Я отредактировал конфигурационный файл MongoDB, чтобы сохранить его данные в /home/user/data/mongod
.
Но данные все еще записываются в старый каталог, предположительно потому, что разрешения для новой папки не предоставляются - как я могу дать MongoDB необходимые разрешения для этого каталога?
Чтобы изменить местоположение, используемое MongoDB для хранения своих данных, вам необходимо:
/etc/mongodb.conf
и изменить строку dbpath=/var/lib/mongodb
на путь, который вы хотите, например, dbpath=/home/user/data/mongodb
mongodb
писать в него, например, chown $USER -R /home/user/data/mongodb
sudo service mongodb restart
Обратите внимание, что если у вас есть какие-либо данные в старом местоположении, которые вы хотите сохранить, вам нужно будет остановить сначала сервис MongoDB, переместите файлы вручную, а затем снова запустите сервис.
Для остановки сервера MongoDB используйте sudo service mongodb stop
Перейдите в / var / lib / mongodb (каталог, в котором вы сохранили данные) в / path и chown mondodb: mongodb / path (каталог, в который вы хотите сохранить данные)
отредактируйте / etc / mongod.conf
service mongod restart (если не удается подключиться, проверьте / путь, если он не содержит mongod.lock, если он существует, удалите его и перезапустите снова)
Вам нужно перезапустить демон, чтобы изменения вступили в силу.
sudo service mongodb restart
Если вы запускаете mongodb из командной строки, вы можете использовать аргумент - dbpath
:
mkdir mydata && mongod --dbpath mydata
Вы можете столкнуться с проблемой, связанной с «файл существует» или чем-то еще, это хорошо известное ограничение MongoDb, подробнее об этом здесь . Просто замените диск и проверьте, не возникла ли эта проблема снова.
Сегодня я столкнулся с той же проблемой и решил ее, выполнив следующие действия.
Отредактируйте файл mongod.conf и отредактируйте значение переменной dbPath.
sudo -H gedit /etc/mongod.conf
Затем используйте следующую команду, чтобы запустить службу mongod
sudo mongod --dbpath "ваш путь к базе данных"
Я попытался запустить указанную выше команду без sudo
, и у меня возникла ошибка. Поэтому используйте sudo
для запуска команды.