Jak zmienić lokalizację, w której MongoDB używa do przechowywania swoich danych?


13

Edytowałem plik konfiguracyjny MongoDB, aby przechowywać w nim dane /home/user/data/mongod.

Ale dane są nadal zapisywane w starym katalogu, podobno dlatego, że uprawnienia do nowego folderu nie są przyznawane - jak mogę przekazać MongoDB niezbędne uprawnienia do tego katalogu?


1
Jak edytowałeś swoją konfigurację? Jak myślisz, dlaczego jest to problem z uprawnieniami? Jak myślisz, dlaczego Mongo używa domyślnego katalogu zamiast zgłaszania błędu? (Jest to sposób na pytanie: czy sprawdziłeś plik dziennika błędów?)
Andrea Corbellini

Odpowiedzi:


29

Aby zmienić lokalizację używaną przez MongoDB do przechowywania danych, musisz:

  1. Edytuj /etc/mongodb.confi zmień linię dbpath=/var/lib/mongodbna żądaną ścieżkę, npdbpath=/home/user/data/mongodb
  2. Zaktualizuj uprawnienia wybranej ścieżki, aby umożliwić mongodbużytkownikowi pisanie na niej, npchown $USER -R /home/user/data/mongodb
  3. Uruchom ponownie usługę MongoDB, uruchamiając sudo service mongodb restart

Pamiętaj, że jeśli w starej lokalizacji masz jakieś dane, które chcesz zachować, musisz najpierw zatrzymać usługę MongoDB, ręcznie przenieść pliki, a następnie ponownie uruchomić usługę.

Aby zatrzymać serwer MongoDB, użyj sudo service mongodb stop


które pliki muszę przenieść?
chovy

@chovy Pliki w katalogu przechowywania.
David Edwards

/var/lib/mongodb
Usunąłem

@chovy Prawdopodobnie usunąłeś wszystkie swoje dane, jeśli takie posiadałeś i nie masz plików, które można przenieść.
David Edwards,

tak w porządku. nie musiałem tego ratować. nie byłem pewien, czy są tam potrzebne pliki inne niż dane. najwyraźniej nie dlatego, że wydaje się, że nadal działa
chovy

1

Musisz ponownie uruchomić demona, aby zmiany odniosły skutek.

sudo service mongodb restart

Zrestartuj deamon, a ja też dam ci sposoby. Stary sposób: „etc / init.d / mongodb restart”, nowy sposób: „sudo service mongodb restart”
Cyril ALFARO

1
Zalecam edycję odpowiedzi, aby uwzględnić te informacje.
Eliah Kagan

1

Jeśli uruchomisz mongodb z wiersza poleceń, możesz użyć --dbpathargumentu: mkdir mydata && mongod --dbpath mydata Możesz napotkać jakiś problem związany z „plikiem istnieje” lub coś takiego, jest to dobrze znane ograniczenie MongoDb, więcej na ten temat tutaj . Po prostu zmień napęd dyskowy i sprawdź, czy teraz nie masz tego problemu.


1

Natrafiłem dzisiaj na ten sam problem i rozwiązałem go, wykonując następujące czynności.

  1. Edytuj plik mongod.conf i edytuj wartość zmiennej dbPath.

    sudo -H gedit /etc/mongod.conf
    
  2. Następnie użyj następującego polecenia, aby uruchomić usługę mongod

    sudo mongod --dbpath "your db path"
    

    Próbowałem uruchomić powyżej polecenia bez sudoi dostałem błąd. Więc użyj, sudoaby uruchomić polecenie.


0

mv / var / lib / mongodb (katalog, w którym zapisałeś dane) do / path i chown mondodb: mongodb / path (katalog, w którym chcesz zapisać dane)

edytuj plik /etc/mongod.conf

usługa mongod restart (jeśli nie można się połączyć, sprawdź / path, jeśli nie zawiera mongod.lock, jeśli istnieje, usuń go i uruchom ponownie)


jego mongodb: chyba mongodb .. !!
Lakshman Pilaka
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.