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.
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á.
@ 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.
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 ...
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.
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:
@ 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
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
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!
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.
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\
/data/db
(se nenhum arquivo de configuração estiver sendo usado) ou poderá ser descoberto viadb.adminCommand("getCmdLineOpts").parsed.dbpath
.db.adminCommand("getCmdLineOpts").parsed.storage.dbpath
admin
banco de dados ou usaradminCommand
:db.serverCmdLineOpts().parsed.storage.dbPath
(MongoDB 2.6+).Respostas:
mongod
usa como padrão o local do banco de dados/data/db/
.Se você executar
ps -xa | grep mongod
e não vir um--dbpath
que diga explicitamentemongod
para olhar para esse parâmetro para o local db e você não tiver umdbpath
no seumongodb.conf
, o local padrão será:/data/db/
e você deverá procurar lá.fonte
/etc/mongod.conf
/usr/bin/mongod -f /etc/mongod.conf
. Tomou o dbpatch da configuração./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.O que o seu arquivo de configuração diz?
Se não estiver correto, tente isso, seus arquivos de banco de dados estarão presentes na lista:
Está
/var/lib/mongodb/*
na minha instalação padrão (Ubuntu 11.04).Observe que também há um
/var/lib/mongodb/mongod.lock
arquivo contendomongod
PID por conveniência, no entanto, ele está localizado no diretório de dados - o que estamos procurando ...fonte
$ grep dbPath /etc/mongod.conf
Na versão mais recente do mongodb v2.6.4, tente:
Isso lhe dará algo parecido com isto:
E é aí que ele armazena os dados.
fonte
du -sh * | sort -hr
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.
Exemplo de saída:
fonte
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:
fonte
Pela minha experiência, o local padrão é
/var/lib/mongodb
depois que eu façofonte
Encontrei o meu aqui em um sistema OSX / usr / local / var / mongodb
fonte
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
fonte
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!fonte
Se você pudesse, de alguma forma, localizar o mongod.log e fazer um grep sobre ele
O valor para dbpath é o local dos dados para o mongodb !! Muito bem sucedida :)
fonte
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 WindowsSe 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.dbPath
configuração está disponível apenas paramongod
.Os scripts de inicialização do pacote Linux não esperam
storage.dbPath
mudar dos padrões. Se você usar os pacotes Linux e alterarstorage.dbPath
, precisará usar seus próprios scripts init e desativar os scripts internos.fonte
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:
fonte