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.
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.
@ 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.
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 ...
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:
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.
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:
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
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
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!
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.
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\
/data/db
(wenn keine Konfigurationsdatei verwendet wird) oder über erkennbardb.adminCommand("getCmdLineOpts").parsed.dbpath
.db.adminCommand("getCmdLineOpts").parsed.storage.dbpath
admin
Datenbank zu wechseln oder Folgendes zu verwendenadminCommand
:db.serverCmdLineOpts().parsed.storage.dbPath
(MongoDB 2.6+).Antworten:
mongod
Der Standardspeicherort der Datenbank ist/data/db/
.Wenn Sie ausgeführt werden
ps -xa | grep mongod
und keine sehen,--dbpath
die explizit vorschreibtmongod
, diesen Parameter für den Datenbankspeicherort zu überprüfen, und Sie keinedbpath
in Ihrem habenmongodb.conf
, lautet der Standardspeicherort:/data/db/
und Sie sollten dort suchen.quelle
/etc/mongod.conf
/usr/bin/mongod -f /etc/mongod.conf
. Nahm das dbpatch aus der Konfiguration./usr/local/etc/mongod.conf
(Konfigurationsdatei) und/usr/local/var/mongodb
(Datenbankspeicherort). Auf einigen Systemen sind dies die Standardeinstellungen.Was sagt Ihre Konfigurationsdatei?
Wenn dies nicht korrekt ist, versuchen Sie dies. Ihre Datenbankdateien werden in der Liste angezeigt:
Es ist
/var/lib/mongodb/*
auf meiner Standardinstallation (Ubuntu 11.04).Beachten Sie, dass es zur Vereinfachung auch eine
/var/lib/mongodb/mongod.lock
Datei mitmongod
PID gibt, die sich jedoch im Datenverzeichnis befindet - nach dem wir suchen ...quelle
$ grep dbPath /etc/mongod.conf
In der neueren Version von mongodb v2.6.4 versuchen Sie:
Es wird Ihnen so etwas geben:
Und dort werden die Daten gespeichert.
quelle
du -sh * | sort -hr
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.
Beispielausgabe:
quelle
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:
quelle
/var/lib/mongodb
Nach meiner Erfahrung ist der Standardspeicherort nach mirquelle
Ich habe meine hier auf einem OSX-System / usr / local / var / mongodb gefunden
quelle
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
quelle
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!quelle
Wenn du irgendwie mongod.log finden könntest und das grepst darüber
Der Wert für dbpath ist der Datenort für mongodb !! Alles Gute :)
quelle
Tatsächlich ist das Standardverzeichnis, in dem die Mongod-Instanz ihre Daten speichert, das
/data/db
unter Linux und OS X,\data\db
unter WindowsWenn Sie MongoDB mit einem Paketverwaltungssystem installiert haben , überprüfen Sie die
/etc/mongod.conf
von Ihren Paketen bereitgestellte Datei , um festzustellen , ob das Verzeichnis angegeben ist.Die
storage.dbPath
Einstellung ist nur für verfügbarmongod
.Die Linux-Paket-Init-Skripte erwarten keine
storage.dbPath
Änderung der Standardeinstellungen. Wenn Sie die Linux-Pakete verwenden und ändernstorage.dbPath
, müssen Sie Ihre eigenen Init-Skripte verwenden und die integrierten Skripte deaktivieren.quelle
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:
quelle