MongoDB'nin nerede veri depoladığını nasıl anlayabilirim? (varsayılan / data / db'de değil!)


160

Ev sahibim bir mongodb örneği ile geldi ve hiçbir / db dizini var, bu yüzden şimdi verilerin gerçekte nerede depolandığını bulmak için neler yapabileceğimi merak ediyorum.


7
Bu konuda daha iyi bir cevabı olan daha yeni bir soru var: "Mongodb için varsayılan veritabanı yolu nedir?" . Veri yolu varsayılanıdır /data/db(yapılandırma dosyası kullanılmıyorsa) veya üzerinden bulunabilir db.adminCommand("getCmdLineOpts").parsed.dbpath.
Stennie

6
OSX, mongo 3.0.4 üzerinde, "db.adminCommand (" getCmdLineOpts ") kullanmak zorunda kaldı. parsed.storage.dbPath"
ski_squaw

@Stennie yorumunuz bana yardımcı oldu (Windows'tayım, bu yüzden Robomongo kullanıyorum), ancak soru-bağlantınız bu soruya işaret ediyor, hedeflediğiniz hedefe değil - stackoverflow.com/a/12738557/112764 - ve 3.x, aslındadb.adminCommand("getCmdLineOpts").parsed.storage.dbpath
NateJ

5
@NateJ Teşekkürler! İlgili sorunun cevabı MongoDB 2.6+ için örnek ve <= 2.4 içindeki eski form için örneklere sahiptir. Ayrıca, adminveritabanına geçmeyi hatırlamak veya aşağıdakileri kullanmak yerine kullanabileceğiniz bir kabuk yardımcısı vardır adminCommand: db.serverCmdLineOpts().parsed.storage.dbPath(MongoDB 2.6+).
Stennie

Yanıtlar:


140

mongodveritabanı konumunu varsayılan olarak ayarlar /data/db/.

Çalıştırırsanız ps -xa | grep mongodve db konumu için bu parametreye bakmayı --dbpathaçıkça söyleyen bir kod görmezseniz mongodvedbpath Gözlerinde farklı mongodb.conf, daha sonra varsayılan konumu olacak: /data/db/ve orada bakmak gerekir.


11
Böyle bir dizin yok
user2384994

18
@ user2384994 mayın bulundu/etc/mongod.conf
K - Toksisite SO büyüyor.

1
Yolu görmedim, ama /usr/bin/mongod -f /etc/mongod.conf. Yapılandırmadan dbpatch aldı.
Putnik

6
Kontrol /usr/local/etc/mongod.conf(yapılandırma dosyası) ve /usr/local/var/mongodbsıra (veritabanı konumunu). Bazı sistemlerde bunlar varsayılan değerlerdir.
Miles Erickson

Peki bu, tüm mongodb sürümü için geçerli yolu tam olarak yazdırmalıdır stackoverflow.com/a/52036070/248616
Nam G VU

57

Yapılandırma dosyanız ne diyor?

$ grep dbpath /etc/mongodb.conf

Doğru değilse, bunu deneyin, veritabanı dosyalarınız listede olacaktır:

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

Bu var /var/lib/mongodb/*varsayılan yüklemesi (Ubuntu 11.04) üzerinde.

Ayrıca kolaylık sağlamak için PID /var/lib/mongodb/mongod.locktutan bir dosya olduğunu unutmayın mongod, ancak aradığımız veri dizininde bulunur ...


Bu sunucuda / var / lib dizini yok ve bu iki komut çalışmıyor (ilki /etc/mongodb.conf ikincisi tanınmayan lsof
bulunamıyor

Belki ev sahibine bilgi eklemelisin. Ubuntu gibi bir dağıtım gibi görünmüyor.
DrColossos

4
Ubuntu 16.04 mongodb v3.4.10'da, bu$ grep dbPath /etc/mongod.conf
ihsan

31

Mongodb v2.6.4'ün yeni sürümünde deneyin:

grep dbpath /etc/mongod.conf

Size böyle bir şey verecektir:

dbpath=/var/lib/mongodb

Ve verileri burada saklıyor.


Benim de buradaydı. Dosya boyutlarını kontrol etmek için bu dizini bulmak isteyenler için:du -sh * | sort -hr

26

buldum db.serverCmdLineOpts() sunucuya bağlanabilirsiniz eğer gerçek yolu bulmak için en sağlam yolu. "Parsed.storage.dbPath" sunucunuzun şu anda kullandığı yolu içerir ve hem config hem de komut satırı bağımsız değişkenlerinden alındığında kullanılabilir.

Ayrıca benim durumumda, yapılandırma değerinin, burada sunulan çözümler tarafından garanti edilmeyen gerçek değeri (yani, son yeniden başlatmadan sonra yapılandırma değişmedi) yansıttığından emin olmak önemlidir.

db.serverCmdLineOpts()

Örnek çıktı:

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

3
Buradaki en iyi cevap bu
Oversteer

Benim için de en iyi cevap
Nam G VU

Bir cazibe gibi çalıştı! Thanks and this upvoted :)
Bryan Jacob

21

Bu soru Mongo'nun Linux / Unix örnekleri için hedeflenmiş olsa da, kullanılan işletim sisteminden bağımsız olarak ilk arama sonuçlarından biridir, bu nedenle gelecekteki Windows kullanıcıları için bunu bulacaktır:

MongoDB varsayılan olarak bir Windows Hizmeti olarak ayarlandıysa, genellikle MongoDB Hizmetinin Özellikleri'ndeki 'Yürütülebilir dosya yolu' girişine bakarak bulabilirsiniz:

'Çalıştırılabilir Yol' seçeneğini gösteren Özellikler Penceresi


O kadar açık değil, ama sorular * nix os
st78 için

3
@ st78 biliyorum, ancak Windows'daki konumu ararken hala ilk Google sonuçlarından biri, bu yüzden benim gibi rastlayan insanlar için Windows yolunu (bir kez anladım) adresleyen bir cevap bıraktım.
Robotnik

15

Deneyimlerimden, varsayılan konum /var/lib/mongodbbenden sonra

sudo apt-get install -y mongodb-org

1
Bunu Linux Mint 17.3 kullanıcıları için onaylayabilirim.
Matheus Dal'Pizzol

8

Burada benimki bir OSX sisteminde buldum / usr / local / var / mongodb


3
Bu Homebrew kullanıcıları için geçerlidir
Matthew

1
Soru, mongodb veri depolama konumunu "nasıl bulabilirim" dir. yalnızca belirli bir kullanıcının veya platformun yolu değil.
Yu Chen

4

Windows için MongoDB \ Server \ 4.0 \ bin klasörünün içine girin ve mongod.cfg dosyasını herhangi bir metin düzenleyicide açın. Sonra dbPath parametresini belirten satırı bulun. Çizgi benzer bir şey gibi görünüyor

dbPath: D: \ Program Dosyaları \ MongoDB \ Server \ 4.0 \ data


2

Sadece etrafında alay ederek buldum /var/db. Yardım için teşekkürler - eminim bu cevaplar diğer sistemler için geçerlidir (örneğin Ubuntu) ve başkalarına yardımcı olacaktır!


2

Eğer bir şekilde mongod.log bulun ve üzerinde bir grep yapmak

grep dbpath mongod.log

Dbpath değeri mongodb için veri konumudur !! Herşey gönlünce olsun :)


2

Aslında, mongod örneğinin verilerini depoladığı varsayılan dizin

/data/db Linux ve OS X'te,

\data\db Windows'ta

Eğer varsa bir paket yönetim sistemi kullanarak MongoDB yüklü , kontrol /etc/mongod.confdizin belirtildi görmek için paketleri sağladığı dosyayı.

storage.dbPathAyar yalnızca kullanılabilirmongod .

Linux paketi init komut dosyalarının storage.dbPathvarsayılanlardan değişmesi beklenmez . Linux paketlerini kullanır ve değiştirirseniz storage.dbPath, kendi başlangıç ​​komut dosyalarınızı kullanmanız ve yerleşik komut dosyalarını devre dışı bırakmanız gerekir.


1

Başladığınızda size gösterir. Ama ev sahibinde yapabileceğin bir şey olup olmadığını bilmiyorum. Komut satırına erişiminiz varsa ve hizmeti yeniden başlatabiliyorsanız, aşağıdaki gibi bir şey alırsınız:

    2016-11-15T12:57:09.182-0500 I CONTROL  [initandlisten]
 MongoDB starting : pid=16448 port=27017 dbpath=C:\data\db\ 
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.