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.

Zugwalt
la source
7
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.

EhevuTov
la source
11
Aucun répertoire de ce type
user2384994
18
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.
Miles Erickson
Eh bien, celui-ci DEVRAIT imprimer le chemin actuel avec précision pour toutes les versions de mongodb stackoverflow.com/a/52036070/248616
Nam G VU
57

Que dit votre fichier de configuration?

$ grep dbpath /etc/mongodb.conf

Si ce n'est pas correct, essayez ceci, vos fichiers de base de données seront présents dans la liste:

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

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 ...

Tomasz Nurkiewicz
la source
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:

grep dbpath /etc/mongod.conf

Cela vous donnera quelque chose comme ceci:

dbpath=/var/lib/mongodb

Et c'est là qu'il stocke les données.

Mwirabua Tim
la source
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.

db.serverCmdLineOpts()

Exemple de sortie:

{
    "argv" : [ 
        // --
    ],
    "parsed" : {
        "config" : "/your-config",
        "storage" : {
            "dbPath" : "/your/actual/db/path",
            // --
        }
    },
    "ok" : 1.0
}
glock18
la source
3
C'est la meilleure réponse ici
Survirage
Meilleure réponse pour moi aussi
Nam G VU
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:

Fenêtre Propriétés affichant l'option 'Chemin d'accès à l'exécutable'

Robotnik
la source
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

sudo apt-get install -y mongodb-org
zillabunny
la source
1
Je peux le confirmer pour les utilisateurs de Linux Mint 17.3.
Matheus Dal'Pizzol
8

J'ai trouvé le mien ici sur un système OSX / usr / local / var / mongodb

Achim Koellner
la source
3
Cela est vrai pour les utilisateurs de Homebrew
Matthieu
1
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

Dibyendu Mitra Roy
la source
2

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!

Zugwalt
la source
2

Si vous pouviez en quelque sorte localiser mongod.log et faire un grep dessus

grep dbpath mongod.log

La valeur de dbpath est l'emplacement des données pour mongodb !! Bonne chance :)

Nilotpal
la source
2

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.

Prashant Pokhriyal
la source
1

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\ 
johnny
la source