Como posso saber onde o mongoDB está armazenando dados? (não está no padrão / data / db!)

160

Meu host veio com uma instância mongodb e não há diretório / db, então agora estou me perguntando o que posso fazer para descobrir onde os dados estão realmente sendo armazenados.

Zugwalt
fonte
7
Há uma pergunta mais recente sobre isso, que tem uma resposta melhor: "Qual é o caminho padrão do banco de dados para o mongodb?" . O caminho dos dados será o padrão /data/db(se nenhum arquivo de configuração estiver sendo usado) ou poderá ser descoberto via db.adminCommand("getCmdLineOpts").parsed.dbpath.
Stennie
6
no OSX, mongo 3.0.4, eu tive que usar "db.adminCommand (" getCmdLineOpts ") parsed.storage.dbPath."
ski_squaw
@Stennie, seu comentário me ajudou (estou no Windows, estou usando o Robomongo), mas o seu ponto de interrogação aponta para essa pergunta, não para o destino pretendido - stackoverflow.com/a/12738557/112764 - e em 3.x, é realmentedb.adminCommand("getCmdLineOpts").parsed.storage.dbpath
NateJ 3/16/16
5
@NateJ Thanks! A resposta na pergunta relacionada tem exemplos para o MongoDB 2.6+ e o formulário antigo em <= 2.4. Há também um auxiliar de shell que você pode usar em vez de se lembrar de mudar para o adminbanco de dados ou usar adminCommand: db.serverCmdLineOpts().parsed.storage.dbPath(MongoDB 2.6+).
Stennie

Respostas:

140

mongodusa como padrão o local do banco de dados /data/db/.

Se você executar ps -xa | grep mongode não vir um --dbpathque diga explicitamente mongodpara olhar para esse parâmetro para o local db e você não tiver um dbpathno seu mongodb.conf, o local padrão será: /data/db/e você deverá procurar lá.

EhevuTov
fonte
11
Não
existe
18
@ user2384994 a mina estava localizada em/etc/mongod.conf
K - A toxicidade no SO está crescendo.
1
Não vi o caminho, mas /usr/bin/mongod -f /etc/mongod.conf. Tomou o dbpatch da configuração.
Putnik
6
Verifique /usr/local/etc/mongod.conf(arquivo de configuração) e /usr/local/var/mongodb(local do banco de dados) também. Em alguns sistemas, esses serão os padrões.
Miles Erickson
Bem, isso deve-se imprimir o caminho atual precisamente por toda a versão mongodb stackoverflow.com/a/52036070/248616
Nam G VU
57

O que o seu arquivo de configuração diz?

$ grep dbpath /etc/mongodb.conf

Se não estiver correto, tente isso, seus arquivos de banco de dados estarão presentes na lista:

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

Está /var/lib/mongodb/*na minha instalação padrão (Ubuntu 11.04).

Observe que também há um /var/lib/mongodb/mongod.lockarquivo contendo mongodPID por conveniência, no entanto, ele está localizado no diretório de dados - o que estamos procurando ...

Tomasz Nurkiewicz
fonte
Não / var / lib no servidor e esses dois comandos não funcionam (primeiro não pode encontrar /etc/mongodb.conf segunda lsof não reconhecido)
Zugwalt
Talvez você deva adicionar informações ao seu host. Não parece ser um Ubuntu como distro.
DrColossos
4
No Ubuntu 16.04 mongodb v3.4.10, é$ grep dbPath /etc/mongod.conf
ihsan
31

Na versão mais recente do mongodb v2.6.4, tente:

grep dbpath /etc/mongod.conf

Isso lhe dará algo parecido com isto:

dbpath=/var/lib/mongodb

E é aí que ele armazena os dados.

Mwirabua Tim
fonte
O meu estava aqui também. Para as pessoas que queriam encontrar este diretório para verificar os tamanhos dos arquivos:du -sh * | sort -hr
25

eu acho db.serverCmdLineOpts() a maneira mais robusta de encontrar o caminho real, se você puder se conectar ao servidor. O "parsed.storage.dbPath" contém o caminho que o servidor está usando no momento e está disponível quando retirado da configuração ou dos argumentos da linha de comando.

Também no meu caso, era importante garantir que o valor de configuração reflita o valor real (ou seja, a configuração não mudou após a última reinicialização), o que não é garantido pelas soluções oferecidas aqui.

db.serverCmdLineOpts()

Exemplo de saída:

{
    "argv" : [ 
        // --
    ],
    "parsed" : {
        "config" : "/your-config",
        "storage" : {
            "dbPath" : "/your/actual/db/path",
            // --
        }
    },
    "ok" : 1.0
}
glock18
fonte
3
Esta é a melhor resposta aqui
Oversteer
A melhor resposta para mim também
Nam G VU
21

Embora essa pergunta seja direcionada para instâncias Linux / Unix do Mongo, é um dos primeiros resultados de pesquisa, independentemente do sistema operacional usado, portanto, para futuros usuários do Windows que encontrarem isso:

Se o MongoDB estiver configurado como um Serviço do Windows da maneira padrão, geralmente você poderá encontrá-lo consultando a entrada 'Caminho para o executável' nas Propriedades do Serviço do MongoDB:

Janela Propriedades mostrando a opção 'Caminho para o executável'

Robotnik
fonte
Não é tão óbvio, mas as perguntas é para * nix OS
st78
3
@ st78 Eu sei, mas ainda é um dos primeiros resultados do Google ao pesquisar o local no Windows, e foi por isso que deixei uma resposta abordando o caminho do Windows (depois que descobri) para pessoas como eu que o encontram.
Robotnik
15

Pela minha experiência, o local padrão é /var/lib/mongodbdepois que eu faço

sudo apt-get install -y mongodb-org
zillabunny
fonte
1
Posso confirmar isso para usuários do Linux Mint 17.3.
Matheus Dal'Pizzol
8

Encontrei o meu aqui em um sistema OSX / usr / local / var / mongodb

Achim Koellner
fonte
3
Isso é verdade para usuários do Homebrew
Matthew
1
A pergunta é "Como posso encontrar" o local de armazenamento de dados do mongodb. não apenas o caminho para um usuário ou plataforma específica.
Yu Chen
4

Para janelas Vá para a pasta MongoDB \ Server \ 4.0 \ bin e abra o arquivo mongod.cfg em qualquer editor de texto. Em seguida, localize a linha que especifica o parâmetro dbPath. A linha parece algo semelhante

dbPath: D: \ Arquivos de Programas \ MongoDB \ Server \ 4.0 \ data

Dibyendu Mitra Roy
fonte
2

Encontrei apenas bisbilhotando /var/db. Obrigado pela ajuda, porém - tenho certeza que essas respostas se aplicam a outros sistemas (por exemplo, Ubuntu) e ajudarão outras pessoas!

Zugwalt
fonte
2

Se você pudesse, de alguma forma, localizar o mongod.log e fazer um grep sobre ele

grep dbpath mongod.log

O valor para dbpath é o local dos dados para o mongodb !! Muito bem sucedida :)

Nilotpal
fonte
2

Na verdade, o diretório padrão em que a instância mongod armazena seus dados é

/data/db no Linux e OS X,

\data\db no Windows

Se você instalou o MongoDB usando um sistema de gerenciamento de pacotes , verifique o/etc/mongod.conf arquivo fornecido por seus pacotes para ver se o diretório está especificado.

A storage.dbPathconfiguração está disponível apenas paramongod .

Os scripts de inicialização do pacote Linux não esperam storage.dbPathmudar dos padrões. Se você usar os pacotes Linux e alterar storage.dbPath, precisará usar seus próprios scripts init e desativar os scripts internos.

Prashant Pokhriyal
fonte
1

Quando você inicia, ele mostra. Mas não sei se é algo que você pode fazer ou não no seu host. Se você tiver acesso à linha de comando e puder reiniciar o serviço, obterá algo como:

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