Як змінити розташування, яке MongoDB використовує для зберігання своїх даних?


13

Я відредагував конфігураційний файл MongoDB, щоб зберегти його дані /home/user/data/mongod.

Але дані все ще записуються в старий каталог, нібито тому, що дозволи на нову папку не надані - як я можу надати MongoDB необхідні дозволи для цього каталогу?


1
Як ви редагували конфігурацію? Чому ви вважаєте, що це проблема з дозволами? Чому ви вважаєте, що Монго використовує каталог за замовчуванням, а не видавати помилку? (Це спосіб запитання: чи перевіряли ви файл журналу помилок?)
Андреа Корбеліні

Відповіді:


29

Щоб змінити місцеположення, яке використовує MongoDB для зберігання своїх даних, потрібно:

  1. Відредагуйте /etc/mongodb.confта змініть рядок dbpath=/var/lib/mongodbдо потрібного шляху, наприкладdbpath=/home/user/data/mongodb
  2. Оновіть дозволи вашого обраного шляху, щоб mongodbкористувач міг писати на нього, наприкладchown $USER -R /home/user/data/mongodb
  3. Перезапустіть службу MongoDB, запустивши sudo service mongodb restart

Зауважте, що якщо у вас є старі дані, які ви хочете зберегти, вам потрібно спочатку зупинити службу MongoDB, перемістити файли вручну, а потім знову запустити службу.

Щоб зупинити використання сервера MongoDB sudo service mongodb stop


які файли мені потрібно перемістити?
чові

@chovy Файли в каталозі зберігання.
Девід Едвардс

Я видалив усе в/var/lib/mongodb
chovy

@chovy Тоді ви, мабуть, видалили всі свої дані, якщо вони були у вас, і у вас немає файлів, які ви можете перемістити.
Девід Едвардс

так, це добре. мені не потрібно було його врятувати. не був впевнений, чи там потрібні мені файли без даних. Мабуть, не тому, що, здається, працює все-таки
човен

1

Потрібно перезапустити демон, щоб зміни набрали чинності.

sudo service mongodb restart

Ти перезапустіть Деймон, я даю вам теж способи. Старий шлях: "etc / init.d / mongodb restart", новий спосіб: "sudo service mongodb restart"
Кирило АЛФАРО

1
Рекомендую відредагувати свою відповідь, щоб включити цю інформацію.
Елія Каган

1

Якщо ви запускаєте mongodb з командного рядка, ви можете використовувати --dbpathаргумент: mkdir mydata && mongod --dbpath mydata Ви можете зіткнутися з якоюсь проблемою, пов’язаною з "файл існує" або щось подібне, це добре відоме обмеження MongoDb, про це докладніше тут . Просто змініть дисковий накопичувач і протестуйте, якщо зараз у вас цього питання не виникає знову.


1

Я зіткнувся з тим же питанням сьогодні, і вирішив цю проблему, виконавши наступні кроки.

  1. Редагуйте файл mongod.conf та відредагуйте значення змінної dbPath.

    sudo -H gedit /etc/mongod.conf
    
  2. Потім використовуйте наступну команду для запуску послуги mongod

    sudo mongod --dbpath "your db path"
    

    Я спробував запустити вище команди без sudoі отримав помилку. Тому використовуйте sudoдля запуску команди.


0

mv the / var / lib / mongodb (каталог, який ви зберегли дані), в / path і chown mondodb: mongodb / path (каталог, у якому ви хочете зберегти дані)

редагуйте /etc/mongod.conf

перезапуск служби mongod (якщо не вдається підключитися, перевірте / шлях, якщо він не містить mongod.lock, якщо він існує, видаліть його та перезавантажте знову)


його mongodb: mongodb я здогадуюсь !!
Лакшман Пілака
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.