Wie kann ich feststellen, wo mongoDB Daten speichert? (Es ist nicht in der Standardeinstellung / data / db!)

160

Mein Host kam mit einer Mongodb-Instanz und es gibt kein / db-Verzeichnis. Jetzt frage ich mich, was ich tun kann, um herauszufinden, wo die Daten tatsächlich gespeichert sind.

Zugwalt
quelle
7
Es gibt eine neuere Frage, die eine bessere Antwort hat: "Was ist der Standarddatenbankpfad für Mongodb?" . Der Datenpfad ist entweder der Standardpfad /data/db(wenn keine Konfigurationsdatei verwendet wird) oder über erkennbar db.adminCommand("getCmdLineOpts").parsed.dbpath.
Stennie
6
Unter OSX, Mongo 3.0.4, musste ich "db.adminCommand (" getCmdLineOpts ") verwenden. parsed.storage.dbPath"
ski_squaw
@Stennie Ihr Kommentar hat mir geholfen (ich bin unter Windows, also verwende ich Robomongo), aber Ihr Frage-Link verweist auf diese Frage, nicht auf Ihr beabsichtigtes Ziel - stackoverflow.com/a/12738557/112764 - und in 3.x, es ist tatsächlichdb.adminCommand("getCmdLineOpts").parsed.storage.dbpath
NateJ
5
@NateJ Danke! Die Antwort auf die verwandte Frage enthält Beispiele für MongoDB 2.6+ sowie die ältere Form in <= 2.4. Es gibt auch einen Shell-Helfer, den Sie verwenden können, anstatt sich daran zu erinnern, zur adminDatenbank zu wechseln oder Folgendes zu verwenden adminCommand: db.serverCmdLineOpts().parsed.storage.dbPath(MongoDB 2.6+).
Stennie

Antworten:

140

mongodDer Standardspeicherort der Datenbank ist /data/db/.

Wenn Sie ausgeführt werden ps -xa | grep mongodund keine sehen, --dbpathdie explizit vorschreibt mongod, diesen Parameter für den Datenbankspeicherort zu überprüfen, und Sie keine dbpathin Ihrem haben mongodb.conf, lautet der Standardspeicherort: /data/db/und Sie sollten dort suchen.

EhevuTov
quelle
11
Kein solches Verzeichnis
user2384994
18
@ user2384994 Mine befand sich bei/etc/mongod.conf
K - Die Toxizität in SO wächst.
1
Hab den Weg nicht gesehen, aber /usr/bin/mongod -f /etc/mongod.conf. Nahm das dbpatch aus der Konfiguration.
Putnik
6
Überprüfen Sie auch /usr/local/etc/mongod.conf(Konfigurationsdatei) und /usr/local/var/mongodb(Datenbankspeicherort). Auf einigen Systemen sind dies die Standardeinstellungen.
Miles Erickson
Nun, dieser sollte den aktuellen Pfad genau für alle Mongodb-Versionen drucken stackoverflow.com/a/52036070/248616
Nam G VU
57

Was sagt Ihre Konfigurationsdatei?

$ grep dbpath /etc/mongodb.conf

Wenn dies nicht korrekt ist, versuchen Sie dies. Ihre Datenbankdateien werden in der Liste angezeigt:

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

Es ist /var/lib/mongodb/*auf meiner Standardinstallation (Ubuntu 11.04).

Beachten Sie, dass es zur Vereinfachung auch eine /var/lib/mongodb/mongod.lockDatei mit mongodPID gibt, die sich jedoch im Datenverzeichnis befindet - nach dem wir suchen ...

Tomasz Nurkiewicz
quelle
Kein / var / lib-Verzeichnis auf diesem Server und diese beiden Befehle funktionieren nicht (erster kann /etc/mongodb.conf nicht finden, zweiter nicht erkanntes lsof)
Zugwalt
Vielleicht sollten Sie Infos für Ihren Gastgeber hinzufügen. Scheint keine Ubuntu-ähnliche Distribution zu sein.
DrColossos
4
Auf Ubuntu 16.04 mongodb v3.4.10 ist es$ grep dbPath /etc/mongod.conf
ihsan
31

In der neueren Version von mongodb v2.6.4 versuchen Sie:

grep dbpath /etc/mongod.conf

Es wird Ihnen so etwas geben:

dbpath=/var/lib/mongodb

Und dort werden die Daten gespeichert.

Mwirabua Tim
quelle
Meins war auch hier. Für Leute, die dieses Verzeichnis finden wollten, um die Dateigröße zu überprüfen:du -sh * | sort -hr
25

Ich finde db.serverCmdLineOpts()den robustesten Weg, um den tatsächlichen Pfad zu finden, wenn Sie eine Verbindung zum Server herstellen können. "Parsed.storage.dbPath" enthält den Pfad, den Ihr Server derzeit verwendet, und ist sowohl in der Konfiguration als auch in den Befehlszeilenargumenten verfügbar.

Auch in meinem Fall war es wichtig sicherzustellen, dass der Konfigurationswert den tatsächlichen Wert widerspiegelt (dh die Konfiguration hat sich nach dem letzten Neustart nicht geändert), was durch die hier angebotenen Lösungen nicht garantiert wird.

db.serverCmdLineOpts()

Beispielausgabe:

{
    "argv" : [ 
        // --
    ],
    "parsed" : {
        "config" : "/your-config",
        "storage" : {
            "dbPath" : "/your/actual/db/path",
            // --
        }
    },
    "ok" : 1.0
}
glock18
quelle
3
Dies ist die beste Antwort hier
Übersteuern
Beste Antwort auch für mich
Nam G VU
21

Diese Frage richtet sich zwar an Linux / Unix-Instanzen von Mongo, ist jedoch eines der ersten Suchergebnisse, unabhängig vom verwendeten Betriebssystem. Für zukünftige Windows-Benutzer, die dies finden:

Wenn MongoDB standardmäßig als Windows-Dienst eingerichtet ist, können Sie ihn normalerweise anhand des Eintrags "Pfad zur ausführbaren Datei" in den Eigenschaften des MongoDB-Dienstes finden:

Eigenschaftenfenster mit der Option "Pfad zur ausführbaren Datei"

Robotnik
quelle
Es ist nicht so offensichtlich, aber Fragen sind für * nix os
st78
3
@ st78 Ich weiß, aber es ist immer noch eines der ersten Google-Ergebnisse bei der Suche nach dem Speicherort in Windows. Deshalb habe ich eine Antwort auf den Windows-Pfad (nachdem ich es herausgefunden habe) für die Leute wie mich hinterlassen, die darüber stolpern.
Robotnik
15

/var/lib/mongodbNach meiner Erfahrung ist der Standardspeicherort nach mir

sudo apt-get install -y mongodb-org
zillabunny
quelle
1
Ich kann dies für Linux Mint 17.3-Benutzer bestätigen.
Matheus Dal'Pizzol
8

Ich habe meine hier auf einem OSX-System / usr / local / var / mongodb gefunden

Achim Koellner
quelle
3
Dies gilt für Homebrew-Benutzer
Matthew
1
Die Frage lautet "Wie finde ich den Mongodb-Datenspeicherort?". nicht nur der Pfad für einen bestimmten Benutzer oder eine bestimmte Plattform.
Yu Chen
4

Für Windows Gehen Sie in den Ordner MongoDB \ Server \ 4.0 \ bin und öffnen Sie die Datei mongod.cfg in einem beliebigen Texteditor. Suchen Sie dann die Zeile, die den Parameter dbPath angibt. Die Linie sieht ähnlich aus

dbPath: D: \ Programme \ MongoDB \ Server \ 4.0 \ data

Dibyendu Mitra Roy
quelle
2

Fand es nur durch Stöbern in /var/db. Vielen Dank für die Hilfe - ich bin sicher, dass diese Antworten für andere Systeme (z. B. Ubuntu) gelten und anderen helfen werden!

Zugwalt
quelle
2

Wenn du irgendwie mongod.log finden könntest und das grepst darüber

grep dbpath mongod.log

Der Wert für dbpath ist der Datenort für mongodb !! Alles Gute :)

Nilotpal
quelle
2

Tatsächlich ist das Standardverzeichnis, in dem die Mongod-Instanz ihre Daten speichert, das

/data/db unter Linux und OS X,

\data\db unter Windows

Wenn Sie MongoDB mit einem Paketverwaltungssystem installiert haben , überprüfen Sie die /etc/mongod.confvon Ihren Paketen bereitgestellte Datei , um festzustellen , ob das Verzeichnis angegeben ist.

Die storage.dbPathEinstellung ist nur für verfügbar mongod.

Die Linux-Paket-Init-Skripte erwarten keine storage.dbPathÄnderung der Standardeinstellungen. Wenn Sie die Linux-Pakete verwenden und ändern storage.dbPath, müssen Sie Ihre eigenen Init-Skripte verwenden und die integrierten Skripte deaktivieren.

Prashant Pokhriyal
quelle
1

Wenn Sie es starten, zeigt es Ihnen. Aber ich weiß nicht, ob Sie es auf Ihrem Gastgeber tun können oder nicht. Wenn Sie Zugriff auf die Befehlszeile haben und den Dienst neu starten können, erhalten Sie Folgendes:

    2016-11-15T12:57:09.182-0500 I CONTROL  [initandlisten]
 MongoDB starting : pid=16448 port=27017 dbpath=C:\data\db\ 
Johnny
quelle