मैं कैसे बता सकता हूं कि मोंगोबीडी कहां डेटा संग्रहीत कर रहा है? (डिफ़ॉल्ट / डेटा / डीबी में इसका नहीं!)


160

मेरा मेजबान एक मोंगोडब उदाहरण के साथ आया और कोई / डीबी निर्देशिका नहीं है इसलिए अब मैं सोच रहा हूं कि मैं यह पता लगाने के लिए क्या कर सकता हूं कि डेटा वास्तव में संग्रहीत किया जा रहा है।


7
इस पर एक और हालिया प्रश्न है जिसका एक बेहतर उत्तर है: "मेनगोडब के लिए डिफ़ॉल्ट डेटाबेस पथ क्या है?" । डेटा पथ या तो डिफ़ॉल्ट होगा /data/db(यदि कोई कॉन्फ़िग फ़ाइल का उपयोग नहीं किया जा रहा है) या के माध्यम से खोजा जा सकता है db.adminCommand("getCmdLineOpts").parsed.dbpath
स्टेनी

6
OSX, mongo 3.0.4 पर, मुझे "db.adminCommand (" getCmdLineOpts ") का उपयोग करना पड़ा। parsed.storage.dbPath"
Ski_squaw

@Stennie आपकी टिप्पणी ने मेरी मदद की (मैं विंडोज़ पर हूं इसलिए मैं रोबोमोंगो का उपयोग कर रहा हूं), लेकिन इस प्रश्न पर आपके लिंक-लिंक आपके इच्छित लक्ष्य पर नहीं हैं - stackoverflow.com/a/12738557/112764 - और में 3.x, यह वास्तव में हैdb.adminCommand("getCmdLineOpts").parsed.storage.dbpath
NateJ

5
@NateJ धन्यवाद! संबंधित सवाल पर जवाब <= 2.4 में पुराने रूप 2.6+ MongoDB के लिए उदाहरण के रूप में भी है। adminडेटाबेस को बदलने या उपयोग करने के लिए याद रखने के बजाय एक शेल हेल्पर भी इस्तेमाल कर सकते हैं adminCommand: db.serverCmdLineOpts().parsed.storage.dbPath(MongoDB 2.6+)।
स्टेनी

जवाबों:


140

mongodडेटाबेस स्थान को डिफॉल्ट करता है /data/db/

आप चलाते हैं ps -xa | grep mongodऔर आप एक नहीं दिख रहा है --dbpathजो स्पष्ट रूप से बताता है कि mongodडाटाबेस स्थान के लिए कि पैरामीटर को देखने के लिए और आप एक की जरूरत नहीं है dbpathअपने में mongodb.confहै, तो डिफ़ॉल्ट स्थान हो जाएगा: /data/db/और तुम वहाँ देखना चाहिए।


11
ऐसी कोई निर्देशिका नहीं
user2384994

18
@ user2384994 मेरा स्थित था/etc/mongod.conf
K - SO में विषाक्तता बढ़ रहा है।

1
पथ नहीं देखा है, लेकिन /usr/bin/mongod -f /etc/mongod.conf। विन्यास से dbpatch लिया।
पुटनिक

6
चेक /usr/local/etc/mongod.conf(कॉन्फ़िगर फ़ाइल) और /usr/local/var/mongodb(डेटाबेस स्थान) भी। कुछ प्रणालियों पर, ये चूक होंगी।
मीलों एरिकसन

वैसे यह एक SHOULD सभी मोंगोडब वर्जन stackoverflow.com/a/52036070/248616
Nam G VU

57

आपकी कॉन्फ़िगरेशन फ़ाइल क्या कहती है?

$ grep dbpath /etc/mongodb.conf

यदि यह सही नहीं है, तो यह कोशिश करें, आपकी डेटाबेस फाइलें सूची में मौजूद होंगी:

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

आईटी इस /var/lib/mongodb/* मेरी डिफ़ॉल्ट स्थापना (Ubuntu 11.04) पर है।

ध्यान दें कि सुविधा के लिए PID /var/lib/mongodb/mongod.lockधारण करने वाली एक फ़ाइल भी है mongod, हालाँकि यह डेटा निर्देशिका में स्थित है - जिसे हम खोज रहे हैं ...


इस सर्वर पर कोई / var / lib निर्देशिका नहीं है और वे दो कमांड काम नहीं करते हैं (पहले एक /etc/mongodb.conf दूसरा एक अपरिचित lsof नहीं मिल सकता है)
Zugwalt

हो सकता है कि आपको अपने मेजबान के लिए इन्फोस जोड़ना चाहिए। ऐसा प्रतीत नहीं होता कि उबंटू डिस्ट्रो की तरह है।
DrColossos

4
Ubuntu 16.04 mongodb v3.4.10 पर, यह है $ grep dbPath /etc/mongod.conf
इहसान

31

Mongodb v2.6.4 के नए संस्करण में कोशिश करें:

grep dbpath /etc/mongod.conf

यह आपको कुछ इस तरह देगा:

dbpath=/var/lib/mongodb

और यह वह जगह है जहाँ यह डेटा संग्रहीत करता है।


मेरा भी यहीं था। उन लोगों के लिए जो फ़ाइल का आकार जाँचने के लिए इस निर्देशिका को खोजना चाहते थे:du -sh * | sort -hr

25

मुझे लगता है db.serverCmdLineOpts()यदि आप सर्वर से कनेक्ट कर सकते हैं तो मुझे वास्तविक पथ का सबसे मजबूत तरीका है। "Parsed.storage.dbPath" में वह पथ है जिसमें आपका सर्वर वर्तमान में उपयोग कर रहा है और यह तब उपलब्ध है जब यह कॉन्फ़िगरेशन से या कमांड लाइन के तर्कों से लिया जाता है।

इसके अलावा मेरे मामले में यह सुनिश्चित करना महत्वपूर्ण था कि कॉन्फ़िगरेशन मान वास्तविक मूल्य को दर्शाता है (यानी अंतिम पुनरारंभ के बाद कॉन्फ़िगरेशन परिवर्तित नहीं हुआ), जो यहां दिए गए समाधानों द्वारा गारंटी नहीं है।

db.serverCmdLineOpts()

उदाहरण आउटपुट:

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

3
यह यहाँ सबसे अच्छा जवाब है
ओवरस्टेयर

मेरे लिए भी सर्वश्रेष्ठ उत्तर
नाम जी VU

21

हालांकि यह सवाल मोंगो के लिनक्स / यूनिक्स उदाहरणों के लिए लक्षित है, यह ऑपरेटिंग सिस्टम की परवाह किए बिना पहले खोज परिणामों में से एक है, इसलिए भविष्य के विंडोज उपयोगकर्ताओं के लिए जो इसे खोजते हैं:

यदि MongoDB को डिफ़ॉल्ट रूप से एक Windows सेवा के रूप में सेट किया गया है, तो आप आमतौर पर MongoDB सेवा के गुणों में 'निष्पादन योग्य' प्रविष्टि को देखकर इसे पा सकते हैं:

गुण विंडो 'निष्पादन योग्य पथ' विकल्प दिखा रहा है


यह स्पष्ट नहीं है, लेकिन प्रश्न
st78

3
@ st78 मुझे पता है, लेकिन यह अभी भी विंडोज में स्थान की खोज करते समय पहले Google परिणामों में से एक है, यही वजह है कि मैंने अपने जैसे लोगों के लिए विंडोज पथ (एक बार मुझे पता चला) का जवाब छोड़ दिया, जो मेरे पास ठोकर खाते हैं।
रोबोटिक

15

मेरे अनुभव के /var/lib/mongodbबाद से मैं कर रहा हूँ डिफ़ॉल्ट स्थान

sudo apt-get install -y mongodb-org

1
मैं लिनक्स मिंट 17.3 उपयोगकर्ताओं के लिए इसकी पुष्टि कर सकता हूं।
माथेस दाल'पीज़ोल

8

मुझे मेरा यहाँ एक OSX सिस्टम / usr / लोकल / var / mongodb मिला


3
यह Homebrew उपयोगकर्ताओं के लिए सच है
मैथ्यू

1
सवाल "मैं कैसे पा सकता हूँ" mongodb डेटा भंडारण स्थान है। केवल एक विशिष्ट उपयोगकर्ता या प्लेटफ़ॉर्म के लिए पथ नहीं।
यू चेन

4

विंडोज़ के लिए MongoDB \ Server \ 4.0 \ bin फ़ोल्डर के अंदर जाएं और किसी भी टेक्स्ट एडिटर में mongod.cfg फ़ाइल खोलें। फिर उस लाइन का पता लगाएं जो dbPath परम को निर्दिष्ट करती है। रेखा कुछ ऐसी ही दिखती है

dbPath: D: \ Program Files \ MongoDB \ Server \ 4.0 \ data


2

यह चारों ओर poking द्वारा बस में मिला /var/db। हालांकि मदद के लिए धन्यवाद - मुझे यकीन है कि ये उत्तर अन्य प्रणालियों (जैसे उबंटू) पर लागू होंगे और दूसरों की मदद करेंगे!


2

यदि आप किसी तरह mongod.log का पता लगा सकते हैं और इस पर एक पकड़ बना सकते हैं

grep dbpath mongod.log

Dbpath का मान मोंगोडब के लिए डेटा स्थान है !! शुभकामनाएं :)


2

दरअसल, डिफॉल्ट डायरेक्टरी जहां मोंगॉड इंस्टेंस अपने डेटा को स्टोर करता है

/data/db लिनक्स और OS X पर,

\data\db विंडोज पर

यदि आपने एक पैकेज प्रबंधन प्रणाली का उपयोग करके MongoDB स्थापित किया है , तो /etc/mongod.confनिर्देशिका निर्दिष्ट करने के लिए अपने पैकेज द्वारा प्रदान की गई फ़ाइल की जांच करें ।

storage.dbPathसेटिंग केवल के लिए उपलब्ध हैmongod

लिनक्स पैकेज इनिट स्क्रिप्ट storage.dbPathडिफॉल्ट से बदलने की उम्मीद नहीं करता है। यदि आप लिनक्स पैकेज और परिवर्तन storage.dbPathका उपयोग करते हैं , तो आपको अपनी स्वयं की इनइट स्क्रिप्ट का उपयोग करना होगा और अंतर्निहित स्क्रिप्ट को अक्षम करना होगा।


1

जब आप इसे शुरू करते हैं तो यह आपको दिखाता है। लेकिन मुझे नहीं पता कि यह ऐसा कुछ है जो आप अपने मेजबान पर कर सकते हैं या नहीं। यदि आपके पास कमांड लाइन तक पहुंच है और सेवा को पुनरारंभ कर सकते हैं, तो आपको कुछ ऐसा मिलेगा:

    2016-11-15T12:57:09.182-0500 I CONTROL  [initandlisten]
 MongoDB starting : pid=16448 port=27017 dbpath=C:\data\db\ 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.