¿Cómo puedo saber dónde está almacenando datos mongoDB? (¡no está en el valor predeterminado / data / db!)


160

Mi host vino con una instancia de mongodb y no hay un directorio / db, así que ahora me pregunto qué puedo hacer para averiguar dónde se almacenan realmente los datos.


77
Hay una pregunta más reciente sobre esto que tiene una mejor respuesta: "¿Cuál es la ruta de base de datos predeterminada para mongodb?" . La ruta de datos será la predeterminada /data/db(si no se utiliza ningún archivo de configuración) o se podrá descubrir a través de db.adminCommand("getCmdLineOpts").parsed.dbpath.
Stennie

66
en OSX, mongo 3.0.4, tuve que usar "db.adminCommand (" getCmdLineOpts "). parsed.storage.dbPath"
ski_squaw

@Stennie, su comentario me ayudó (estoy en Windows, así que estoy usando Robomongo), pero su enlace de preguntas apunta a esta pregunta, no a su objetivo previsto - stackoverflow.com/a/12738557/112764 - y en 3.x, es en realidaddb.adminCommand("getCmdLineOpts").parsed.storage.dbpath
NateJ

55
@NateJ ¡Gracias! La respuesta a la pregunta relacionada tiene ejemplos para MongoDB 2.6+, así como la forma anterior en <= 2.4. También hay un asistente de shell que puede usar en lugar de recordar cambiar a la adminbase de datos o usar adminCommand: db.serverCmdLineOpts().parsed.storage.dbPath(MongoDB 2.6+).
Stennie

Respuestas:


140

mongodel valor predeterminado es la ubicación de la base de datos /data/db/.

Si ejecuta ps -xa | grep mongody no ve uno --dbpathque explícitamente le dice mongodque busque ese parámetro para la ubicación de base de datos y no tiene un dbpathen su mongodb.conf, entonces la ubicación predeterminada será: /data/db/y debe buscar allí.


11
No
existe

18
@ user2384994 la mina estaba ubicada en/etc/mongod.conf
K - La toxicidad en SO está creciendo.

1
No vi el camino, pero /usr/bin/mongod -f /etc/mongod.conf. Tomó el dbpatch de la configuración.
Putnik

66
Verifique /usr/local/etc/mongod.conf(archivo de configuración) y /usr/local/var/mongodb(ubicación de la base de datos) también. En algunos sistemas, estos serán los valores predeterminados.
Miles Erickson

Bueno, este DEBERÍA imprimir la ruta actual precisamente para todas las versiones de mongodb stackoverflow.com/a/52036070/248616
Nam G VU

57

¿Qué dice tu archivo de configuración?

$ grep dbpath /etc/mongodb.conf

Si no es correcto, intente esto, sus archivos de base de datos estarán presentes en la lista:

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

Está /var/lib/mongodb/*en mi instalación predeterminada (Ubuntu 11.04).

Tenga en cuenta que también hay un /var/lib/mongodb/mongod.lockarchivo que contiene mongodPID por conveniencia, sin embargo, se encuentra en el directorio de datos, que estamos buscando ...


No hay directorio / var / lib en este servidor y esos dos comandos no funcionan (el primero no puede encontrar /etc/mongodb.conf, el segundo no reconocido lsof)
Zugwalt

Tal vez deberías agregar información para tu anfitrión. No parece ser una distribución como Ubuntu.
DrColossos

44
En Ubuntu 16.04 mongodb v3.4.10, es$ grep dbPath /etc/mongod.conf
ihsan

31

En la versión más reciente de mongodb v2.6.4 intente:

grep dbpath /etc/mongod.conf

Te dará algo como esto:

dbpath=/var/lib/mongodb

Y ahí es donde almacena los datos.


La mía también estaba aquí. Para las personas que querían encontrar este directorio para verificar los tamaños de archivo:du -sh * | sort -hr

25

Encuentro db.serverCmdLineOpts()la forma más sólida de encontrar la ruta real si puede conectarse al servidor. El "parsed.storage.dbPath" contiene la ruta que su servidor está usando actualmente y está disponible cuando se toma de la configuración o de los argumentos de la línea de comandos.

También en mi caso fue importante asegurarme de que el valor de configuración refleja el valor real (es decir, la configuración no cambió después del último reinicio), lo que no está garantizado por las soluciones que se ofrecen aquí.

db.serverCmdLineOpts()

Salida de ejemplo:

{
    "argv" : [ 
        // --
    ],
    "parsed" : {
        "config" : "/your-config",
        "storage" : {
            "dbPath" : "/your/actual/db/path",
            // --
        }
    },
    "ok" : 1.0
}

3
Esta es la mejor respuesta aquí
sobreviraje el

La mejor respuesta para mí también
Nam G VU

21

Si bien esta pregunta está dirigida a instancias de Mongo en Linux / Unix, es uno de los primeros resultados de búsqueda independientemente del sistema operativo utilizado, por lo que para los futuros usuarios de Windows que encuentren esto:

Si MongoDB está configurado como un Servicio de Windows de la manera predeterminada, generalmente puede encontrarlo mirando la entrada 'Ruta al ejecutable' en las Propiedades del Servicio MongoDB:

Ventana de propiedades que muestra la opción 'Ruta al ejecutable'


No es tan obvio, pero las preguntas son para * nix os
st78

3
@ st78 Lo sé, pero sigue siendo uno de los primeros resultados de Google al buscar la ubicación en Windows, por lo que dejé una respuesta que aborda la ruta de Windows (una vez que lo descubrí) para las personas como yo que se topan con ella.
Robotnik

15

Desde mi experiencia, la ubicación predeterminada es /var/lib/mongodbdespués de que lo hago

sudo apt-get install -y mongodb-org

1
Puedo confirmar esto para los usuarios de Linux Mint 17.3.
Matheus Dal'Pizzol

8

Encontré el mío aquí en un sistema OSX / usr / local / var / mongodb


3
Esto es cierto para los usuarios de Homebrew
Matthew

1
La pregunta es "¿Cómo puedo encontrar" la ubicación de almacenamiento de datos mongodb. no solo el camino para un usuario o plataforma específicos.
Yu Chen

4

Para Windows Vaya dentro de la carpeta MongoDB \ Server \ 4.0 \ bin y abra el archivo mongod.cfg en cualquier editor de texto. Luego ubique la línea que especifica el parámetro dbPath. La línea se ve algo similar

dbPath: D: \ Archivos de programa \ MongoDB \ Server \ 4.0 \ data


2

Lo encontré solo hurgando /var/db. Sin embargo, gracias por la ayuda. Estoy seguro de que estas respuestas se aplican a otros sistemas (por ejemplo, Ubuntu) y ayudarán a otros.


2

Si de alguna manera pudieras localizar mongod.log y hacer un grep sobre él

grep dbpath mongod.log

¡El valor para dbpath es la ubicación de datos para mongodb! Todo lo mejor :)


2

En realidad, el directorio predeterminado donde la instancia de mongod almacena sus datos es

/data/db en Linux y OS X,

\data\db en Windows

Si instaló MongoDB usando un sistema de administración de paquetes , verifique el /etc/mongod.confarchivo provisto por sus paquetes para ver el directorio especificado.

La storage.dbPathconfiguración solo está disponible para mongod.

Los scripts de inicio del paquete de Linux no esperan storage.dbPathcambiar de los valores predeterminados. Si usa los paquetes de Linux y cambia storage.dbPath, tendrá que usar sus propios scripts de inicio y deshabilitar los scripts integrados.


1

Cuando lo enciendes te muestra. Pero no sé si es algo que puedes hacer o no en tu host. Si tiene acceso a la línea de comando y puede reiniciar el servicio, obtendrá algo como:

    2016-11-15T12:57:09.182-0500 I CONTROL  [initandlisten]
 MongoDB starting : pid=16448 port=27017 dbpath=C:\data\db\ 
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.