Comment puis-je savoir où mongoDB stocke les données? (ce n'est pas dans la valeur par défaut / data / db!)
160
Mon hôte est venu avec une instance mongodb et il n'y a pas de répertoire / db donc maintenant je me demande ce que je peux faire pour savoir où les données sont réellement stockées.
Il y a une question plus récente à ce sujet qui a une meilleure réponse: "Quel est le chemin de base de données par défaut pour mongodb?" . Le chemin des données sera soit le chemin par défaut /data/db(si aucun fichier de configuration n'est utilisé), soit détectable via db.adminCommand("getCmdLineOpts").parsed.dbpath.
Stennie
6
sur OSX, mongo 3.0.4, j'ai dû utiliser "db.adminCommand (" getCmdLineOpts "). parsed.storage.dbPath"
ski_squaw
@Stennie votre commentaire m'a aidé (je suis sous Windows donc j'utilise Robomongo), mais votre question-lien pointe sur cette question, pas sur votre cible - stackoverflow.com/a/12738557/112764 - et dans 3.x, c'est en faitdb.adminCommand("getCmdLineOpts").parsed.storage.dbpath
NateJ
5
@NateJ Merci! La réponse à la question associée contient des exemples pour MongoDB 2.6+ ainsi que l'ancienne forme dans <= 2.4. Il existe également un assistant de shell que vous pouvez utiliser au lieu de vous rappeler de changer de adminbase de données ou d'utiliser adminCommand: db.serverCmdLineOpts().parsed.storage.dbPath(MongoDB 2.6+).
Stennie
Réponses:
140
mongodpar défaut, l'emplacement de la base de données est /data/db/.
Si vous exécutez ps -xa | grep mongodet que vous ne voyez pas un --dbpathqui indique explicitement mongodde regarder ce paramètre pour l'emplacement de la base de données et que vous n'avez pas de dbpathdans votre mongodb.conf, alors l'emplacement par défaut sera: /data/db/et vous devriez y regarder.
La mine @ user2384994 était située à/etc/mongod.conf
K - La toxicité du SO augmente.
1
Je n'ai pas vu le chemin, mais /usr/bin/mongod -f /etc/mongod.conf. A pris le dbpatch de la configuration.
Putnik le
6
Vérifiez également /usr/local/etc/mongod.conf(fichier de configuration) et /usr/local/var/mongodb(emplacement de la base de données). Sur certains systèmes, ce seront les valeurs par défaut.
C'est /var/lib/mongodb/*sur mon installation par défaut (Ubuntu 11.04).
Notez qu'il existe également un /var/lib/mongodb/mongod.lockfichier contenant le mongodPID pour plus de commodité, mais il se trouve dans le répertoire de données - que nous recherchons ...
Pas de répertoire / var / lib sur ce serveur et ces deux commandes ne fonctionnent pas (le premier ne peut pas trouver /etc/mongodb.conf, le second lsof non reconnu)
Zugwalt
Vous devriez peut-être ajouter des informations pour votre hôte. Ne semble pas être une distribution comme Ubuntu.
DrColossos
4
Sur Ubuntu 16.04 mongodb v3.4.10, c'est$ grep dbPath /etc/mongod.conf
ihsan
31
Dans la nouvelle version de mongodb v2.6.4, essayez:
Le mien était là aussi. Pour les personnes qui voulaient trouver ce répertoire pour vérifier la taille des fichiers:du -sh * | sort -hr
26
Je trouve db.serverCmdLineOpts()le moyen le plus robuste de trouver le chemin réel si vous pouvez vous connecter au serveur. Le "parsed.storage.dbPath" contient le chemin que votre serveur utilise actuellement et est disponible à la fois lorsqu'il est extrait de la configuration ou des arguments de la ligne de commande.
Dans mon cas également, il était important de s'assurer que la valeur de configuration reflète la valeur réelle (c'est-à-dire que la configuration n'a pas changé après le dernier redémarrage), ce qui n'est pas garanti par les solutions proposées ici.
A travaillé comme un charme! Merci et cela devrait être voté :)
Bryan Jacob il y a
21
Bien que cette question s'adresse aux instances Linux / Unix de Mongo, c'est l'un des premiers résultats de recherche quel que soit le système d'exploitation utilisé, donc pour les futurs utilisateurs de Windows qui trouvent ceci:
Si MongoDB est configuré en tant que service Windows de la manière par défaut, vous pouvez généralement le trouver en regardant l'entrée `` Chemin d'accès à l'exécutable '' dans les propriétés du service MongoDB:
Ce n'est pas si évident, mais les questions sont pour * nix os
st78
3
@ st78 Je sais, mais c'est toujours l'un des premiers résultats de Google lors de la recherche de l'emplacement dans Windows, c'est pourquoi j'ai laissé une réponse concernant le chemin Windows (une fois que je l'ai compris) pour les gens comme moi qui trébuchent dessus.
Robotnik
15
D'après mon expérience, l'emplacement par défaut est /var/lib/mongodbaprès moi
La question est "Comment puis-je trouver" l'emplacement de stockage des données mongodb. pas seulement le chemin pour un utilisateur ou une plate-forme spécifique.
Yu Chen
4
Pour Windows Allez dans le dossier MongoDB \ Server \ 4.0 \ bin et ouvrez le fichier mongod.cfg dans n'importe quel éditeur de texte. Recherchez ensuite la ligne qui spécifie le paramètre dbPath. La ligne ressemble à quelque chose de similaire
dbPath: D: \ Program Files \ MongoDB \ Server \ 4.0 \ data
Je l'ai trouvé juste en fouinant /var/db. Merci pour l'aide - je suis sûr que ces réponses s'appliquent à d'autres systèmes (par exemple Ubuntu) et aideront les autres!
En fait, le répertoire par défaut dans lequel l'instance mongod stocke ses données est
/data/db sous Linux et OS X,
\data\db sous Windows
Si vous avez installé MongoDB à l'aide d'un système de gestion de packages , vérifiez le /etc/mongod.conffichier fourni par vos packages pour voir que le répertoire est spécifié.
Le storage.dbPathparamètre n'est disponible que pour mongod.
Les scripts d'initialisation du package Linux ne s'attendent pas storage.dbPathà changer les valeurs par défaut. Si vous utilisez les packages Linux et changez storage.dbPath, vous devrez utiliser vos propres scripts d'initialisation et désactiver les scripts intégrés.
Lorsque vous le démarrez, il vous montre. Mais je ne sais pas si c'est quelque chose que vous pouvez faire ou non sur votre hôte. Si vous avez accès à la ligne de commande et pouvez redémarrer le service, vous obtiendrez quelque chose comme:
2016-11-15T12:57:09.182-0500 I CONTROL [initandlisten]MongoDB starting : pid=16448 port=27017 dbpath=C:\data\db\
/data/db
(si aucun fichier de configuration n'est utilisé), soit détectable viadb.adminCommand("getCmdLineOpts").parsed.dbpath
.db.adminCommand("getCmdLineOpts").parsed.storage.dbpath
admin
base de données ou d'utiliseradminCommand
:db.serverCmdLineOpts().parsed.storage.dbPath
(MongoDB 2.6+).Réponses:
mongod
par défaut, l'emplacement de la base de données est/data/db/
.Si vous exécutez
ps -xa | grep mongod
et que vous ne voyez pas un--dbpath
qui indique explicitementmongod
de regarder ce paramètre pour l'emplacement de la base de données et que vous n'avez pas dedbpath
dans votremongodb.conf
, alors l'emplacement par défaut sera:/data/db/
et vous devriez y regarder.la source
/etc/mongod.conf
/usr/bin/mongod -f /etc/mongod.conf
. A pris le dbpatch de la configuration./usr/local/etc/mongod.conf
(fichier de configuration) et/usr/local/var/mongodb
(emplacement de la base de données). Sur certains systèmes, ce seront les valeurs par défaut.Que dit votre fichier de configuration?
Si ce n'est pas correct, essayez ceci, vos fichiers de base de données seront présents dans la liste:
C'est
/var/lib/mongodb/*
sur mon installation par défaut (Ubuntu 11.04).Notez qu'il existe également un
/var/lib/mongodb/mongod.lock
fichier contenant lemongod
PID pour plus de commodité, mais il se trouve dans le répertoire de données - que nous recherchons ...la source
$ grep dbPath /etc/mongod.conf
Dans la nouvelle version de mongodb v2.6.4, essayez:
Cela vous donnera quelque chose comme ceci:
Et c'est là qu'il stocke les données.
la source
du -sh * | sort -hr
Je trouve
db.serverCmdLineOpts()
le moyen le plus robuste de trouver le chemin réel si vous pouvez vous connecter au serveur. Le "parsed.storage.dbPath" contient le chemin que votre serveur utilise actuellement et est disponible à la fois lorsqu'il est extrait de la configuration ou des arguments de la ligne de commande.Dans mon cas également, il était important de s'assurer que la valeur de configuration reflète la valeur réelle (c'est-à-dire que la configuration n'a pas changé après le dernier redémarrage), ce qui n'est pas garanti par les solutions proposées ici.
Exemple de sortie:
la source
Bien que cette question s'adresse aux instances Linux / Unix de Mongo, c'est l'un des premiers résultats de recherche quel que soit le système d'exploitation utilisé, donc pour les futurs utilisateurs de Windows qui trouvent ceci:
Si MongoDB est configuré en tant que service Windows de la manière par défaut, vous pouvez généralement le trouver en regardant l'entrée `` Chemin d'accès à l'exécutable '' dans les propriétés du service MongoDB:
la source
D'après mon expérience, l'emplacement par défaut est
/var/lib/mongodb
après moila source
J'ai trouvé le mien ici sur un système OSX / usr / local / var / mongodb
la source
Pour Windows Allez dans le dossier MongoDB \ Server \ 4.0 \ bin et ouvrez le fichier mongod.cfg dans n'importe quel éditeur de texte. Recherchez ensuite la ligne qui spécifie le paramètre dbPath. La ligne ressemble à quelque chose de similaire
la source
Je l'ai trouvé juste en fouinant
/var/db
. Merci pour l'aide - je suis sûr que ces réponses s'appliquent à d'autres systèmes (par exemple Ubuntu) et aideront les autres!la source
Si vous pouviez en quelque sorte localiser mongod.log et faire un grep dessus
La valeur de dbpath est l'emplacement des données pour mongodb !! Bonne chance :)
la source
En fait, le répertoire par défaut dans lequel l'instance mongod stocke ses données est
/data/db
sous Linux et OS X,\data\db
sous WindowsSi vous avez installé MongoDB à l'aide d'un système de gestion de packages , vérifiez le
/etc/mongod.conf
fichier fourni par vos packages pour voir que le répertoire est spécifié.Le
storage.dbPath
paramètre n'est disponible que pourmongod
.Les scripts d'initialisation du package Linux ne s'attendent pas
storage.dbPath
à changer les valeurs par défaut. Si vous utilisez les packages Linux et changezstorage.dbPath
, vous devrez utiliser vos propres scripts d'initialisation et désactiver les scripts intégrés.la source
Lorsque vous le démarrez, il vous montre. Mais je ne sais pas si c'est quelque chose que vous pouvez faire ou non sur votre hôte. Si vous avez accès à la ligne de commande et pouvez redémarrer le service, vous obtiendrez quelque chose comme:
la source