Jak mogę sprawdzić, gdzie mongoDB przechowuje dane? (nie jest w domyślnym / data / db!)

160

Mój host przyszedł z instancją mongodb i nie ma katalogu / db, więc teraz zastanawiam się, co mogę zrobić, aby dowiedzieć się, gdzie faktycznie są przechowywane dane.

Zugwalt
źródło
7
Pojawiło się nowsze pytanie na ten temat, na które można znaleźć lepszą odpowiedź: „Jaka jest domyślna ścieżka bazy danych dla mongodb?” . Ścieżka danych będzie domyślna /data/db(jeśli nie jest używany żaden plik konfiguracyjny) lub będzie możliwa do wykrycia przez db.adminCommand("getCmdLineOpts").parsed.dbpath.
Stennie
6
w systemie OSX, mongo 3.0.4, musiałem użyć „db.adminCommand („ getCmdLineOpts ”). parsed.storage.dbPath”
ski_squaw
@Stennie Twój komentarz pomógł mi (jestem na Windowsie, więc używam Robomongo), ale Twoje pytanie-link wskazuje na to pytanie, a nie na zamierzony cel - stackoverflow.com/a/12738557/112764 - i 3.x, to właściwiedb.adminCommand("getCmdLineOpts").parsed.storage.dbpath
NateJ
5
@NateJ Thanks! Odpowiedź na pytanie powiązanego ma przykłady MongoDB 2.6+ a także starszą formę w <= 2,4. Istnieje również pomocnik powłoki, którego możesz użyć zamiast pamiętać o zmianie adminbazy danych lub użyciu adminCommand: db.serverCmdLineOpts().parsed.storage.dbPath(MongoDB 2.6+).
Stennie

Odpowiedzi:

140

mongodDomyślnie lokalizacja bazy danych to /data/db/.

Jeśli uruchomisz ps -xa | grep mongodi nie widzisz, --dbpathktóry wyraźnie mówi, mongodaby spojrzeć na ten parametr dla lokalizacji bazy danych, a nie masz dbpathw swoim mongodb.conf, wówczas domyślną lokalizacją będzie: /data/db/i powinieneś tam zajrzeć.

EhevuTov
źródło
11
Nie ma takiego katalogu
user2384994
18
Kopalnia @ user2384994 znajdowała się w/etc/mongod.conf
K - Toksyczność w SO rośnie.
1
Nie widziałem ścieżki, ale /usr/bin/mongod -f /etc/mongod.conf. Pobrał dbpatch z pliku config.
Putnik
6
Sprawdź również /usr/local/etc/mongod.conf(plik konfiguracyjny) i /usr/local/var/mongodb(lokalizację bazy danych). W niektórych systemach będą to wartości domyślne.
Miles Erickson,
Cóż, ten POWINIEN wydrukować bieżącą ścieżkę dokładnie dla wszystkich wersji mongodb stackoverflow.com/a/52036070/248616
Nam G VU
57

Co mówi twój plik konfiguracyjny?

$ grep dbpath /etc/mongodb.conf

Jeśli nie jest poprawna, spróbuj tego, twoje pliki bazy danych będą obecne na liście:

$ sudo lsof -p `ps aux | grep mongodb | head -n1 | tr -s ' ' | cut -d' ' -f 2` | grep REG

Jest /var/lib/mongodb/*na mojej domyślnej instalacji (Ubuntu 11.04).

Zauważ, że istnieje również /var/lib/mongodb/mongod.lockplik przechowujący mongodPID dla wygody, jednak znajduje się on w katalogu danych - którego szukamy ...

Tomasz Nurkiewicz
źródło
Brak katalogu / var / lib na tym serwerze i te dwie komendy nie działają (pierwsza nie może znaleźć /etc/mongodb.conf, druga nierozpoznana lsof)
Zugwalt
Może powinieneś dodać informacje dla swojego hosta. Nie wydaje się być dystrybucją podobną do Ubuntu.
Dr Colossos
4
Na Ubuntu 16.04 mongodb v3.4.10 jest$ grep dbPath /etc/mongod.conf
ihsan
31

W nowszej wersji mongodb v2.6.4 wypróbuj:

grep dbpath /etc/mongod.conf

Da ci coś takiego:

dbpath=/var/lib/mongodb

I tam właśnie przechowuje dane.

Mwirabua Tim
źródło
Mój też był tutaj. Dla osób, które chciały znaleźć ten katalog, aby sprawdzić rozmiary plików:du -sh * | sort -hr
25

Znajduję db.serverCmdLineOpts()najbardziej niezawodny sposób na znalezienie rzeczywistej ścieżki, jeśli możesz połączyć się z serwerem. „Parsed.storage.dbPath” zawiera ścieżkę, której obecnie używa twój serwer, i jest dostępna zarówno wtedy, gdy została pobrana z konfiguracji, jak iz argumentów wiersza poleceń.

Również w moim przypadku ważne było, aby upewnić się, że wartość config odzwierciedla rzeczywistą wartość (tj. Config nie zmieniła się po ostatnim restarcie), czego nie gwarantują oferowane tutaj rozwiązania.

db.serverCmdLineOpts()

Przykładowe dane wyjściowe:

{
    "argv" : [ 
        // --
    ],
    "parsed" : {
        "config" : "/your-config",
        "storage" : {
            "dbPath" : "/your/actual/db/path",
            // --
        }
    },
    "ok" : 1.0
}
glock18
źródło
3
To najlepsza odpowiedź tutaj
Oversteer
Dla mnie też najlepsza odpowiedź
Nam G VU
21

Chociaż to pytanie jest skierowane do instancji Mongo w systemie Linux / Unix, jest to jeden z pierwszych wyników wyszukiwania niezależnie od używanego systemu operacyjnego, więc dla przyszłych użytkowników systemu Windows, którzy znajdą to:

Jeśli MongoDB jest skonfigurowany jako usługa systemu Windows w sposób domyślny, zwykle można go znaleźć, patrząc na wpis „Ścieżka do pliku wykonywalnego” we właściwościach usługi MongoDB:

Okno właściwości pokazujące opcję „Ścieżka do pliku wykonywalnego”

Robotnik
źródło
Nie jest to takie oczywiste, ale pytania dotyczą * nix os
st78
3
@ st78 Wiem, ale wciąż jest to jeden z pierwszych wyników Google podczas wyszukiwania lokalizacji w systemie Windows, dlatego zostawiłem odpowiedź dotyczącą ścieżki systemu Windows (kiedy już to zrozumiałem) dla ludzi takich jak ja, którzy się na nią natkną.
Robotnik
15

Z mojego doświadczenia wynika, że ​​domyślna lokalizacja jest /var/lib/mongodbpo tym, jak to zrobię

sudo apt-get install -y mongodb-org
zillabunny
źródło
1
Mogę to potwierdzić dla użytkowników Linux Mint 17.3.
Matheus Dal'Pizzol
8

Znalazłem mój tutaj w systemie OSX / usr / local / var / mongodb

Achim Koellner
źródło
3
Dotyczy to użytkowników Homebrew
Matthew
1
Pytanie brzmi: „Jak mogę znaleźć” lokalizację przechowywania danych mongodb. nie tylko ścieżka dla konkretnego użytkownika lub platformy.
Yu Chen,
4

W systemie Windows Przejdź do folderu MongoDB \ Server \ 4.0 \ bin i otwórz plik mongod.cfg w dowolnym edytorze tekstu. Następnie znajdź wiersz określający parametr dbPath. Linia wygląda podobnie

dbPath: D: \ Program Files \ MongoDB \ Server \ 4.0 \ data

Dibyendu Mitra Roy
źródło
2

Znalazłem go, zaglądając do środka /var/db. Dziękuję jednak za pomoc - jestem pewien, że te odpowiedzi dotyczą innych systemów (np. Ubuntu) i pomogą innym!

Zugwalt
źródło
2

Gdybyś mógł w jakiś sposób zlokalizować mongod.log i wykonać na nim grep

grep dbpath mongod.log

Wartość dbpath to lokalizacja danych dla mongodb !! Wszystkiego najlepszego :)

Nilotpal
źródło
2

Właściwie domyślnym katalogiem, w którym instancja mongod przechowuje swoje dane, jest

/data/db w systemie Linux i OS X,

\data\db w systemie Windows

Jeśli zainstalowałeś MongoDB przy użyciu systemu zarządzania pakietami , sprawdź /etc/mongod.confplik dostarczony przez pakiety, aby zobaczyć, czy określono katalog.

To storage.dbPathustawienie jest dostępne tylko dla mongod.

Skrypty startowe pakietu Linux nie oczekują storage.dbPathzmiany wartości domyślnych. Jeśli korzystasz z pakietów Linuksa i zmieniasz się storage.dbPath, będziesz musiał użyć własnych skryptów startowych i wyłączyć wbudowane skrypty.

Prashant Pokhriyal
źródło
1

Po uruchomieniu to pokazuje. Ale nie wiem, czy jest to coś, co możesz zrobić na swoim hoście, czy nie. Jeśli masz dostęp do wiersza poleceń i możesz ponownie uruchomić usługę, otrzymasz coś takiego:

    2016-11-15T12:57:09.182-0500 I CONTROL  [initandlisten]
 MongoDB starting : pid=16448 port=27017 dbpath=C:\data\db\ 
Jasio
źródło