खोल से भंडारण इंजन की जाँच करें


35

मैं 3.0 में अपग्रेड कर रहा हूं और अपग्रेड के साथ कुछ मुद्दों में भाग गया हूं। विशेष रूप से, मैं एक त्रुटि जब शुरू करने की कोशिश कर मिल mongodके माध्यम से ssh, यह डिफ़ॉल्ट का उपयोग करने की कोशिश की dbpathएक मैं अपने नए YAML config फ़ाइल में निर्दिष्ट करने के बजाय। मैंने आगे बढ़कर मशीन को रिबूट किया और अब mongodफिर से चल रहा है। मैं इस बिंदु पर थोड़ा पागल हूं और यह जानना चाहूंगा कि क्या wiredtigerशेल में से भंडारण इंजन सुनिश्चित करने का एक तरीका है ।

जवाबों:


61

वर्तमान में उपयोग किए जा रहे स्टोरेज इंजन को खोजने का सबसे आसान तरीका है।

Mongo कंसोल प्रकार के अंदर

db.serverStatus().storageEngine

यह वर्तमान में उपयोग किए जा रहे स्टोरेज इंजन को लौटाता है

{ "name" : "wiredTiger" }

एक बार जब यह पुष्टि हो जाती है कि वायर्डटाइगर का उपयोग किया जा रहा है तो टाइप करें

db.serverStatus().wiredTiger

वायर्डटाइगर के सभी विन्यास विवरण प्राप्त करने के लिए।


2
बस पुष्टि करने के लिए, यह विंडोज पर भी काम करता है।
क्रिस पैटन

9

अस्वीकरण: एक MongoDB विशेषज्ञ नहीं

लिनक्स में प्रक्रिया सूची की जाँच करें

WIREDTIGER_CONFIGURED=`ps -ef|grep mongod|grep -i storageengine|grep -ic wiredtiger`
echo ${WIREDTIGER_CONFIGURED}

1 का मतलब है वहाँ

मोंगू खोल से

db.serverStatus()

आपको कुछ इस तरह से देखना चाहिए

"wiredTiger" : {
   ...
   "cache" : {
      "tracked dirty bytes in the cache" : <num>,
      "bytes currently in the cache" : <num>,
      "maximum bytes configured" : <num>,
      "bytes read into cache" :<num>,

या आप बस के साथ भंडारण इंजन नाम खींच सकते हैं

db.serverStatus().storageEngine.name

आपको या तो मिलेगा mmapv1याwiredTiger

या कमांड लाइन से

MONGO_ENGINE=`mongo -u... -p... --eval "db.serverStatus().storageEngine.name"`

मैं उबंटू पर हूं, इसलिए मैंने लिनक्स कमांड की कोशिश की और यह 0 दिखा, लेकिन db.serverStatus () एक वायर्डटाइगर नोड दिखाता है।
ton.yeung

वैसे भी, db.serverStatus उत्साहजनक है। इसके साथ मैं आगे जाऊंगा और अपने अन्य सर्वरों को अपडेट करूंगा और एक निश्चित उत्तर के लिए मोंगो के साथ एक टिकट डालूंगा।
ton.yeung

इस पर किसी भी अद्यतन? मुझे अभी भी 0 मिलता है जब मैं इसे चलाता हूं।
चैतन्य.वरनासी २५'१६

2
@ चैतन्य.वरनासी कृपया अन्य उत्तर देखें। यह वही है जो आप चाहते हैं। स्पष्टता के लिए, मैं यह कहूंगा: यदि आप MongoDB 3.x चला रहे हैं, तो बस चलाएं db.serverStatus().storageEngine.name। यह या तो कहेंगे mmapv1या wiredTiger
रोलैंडमाइसीडीडीबीए

--storageEngineपैरामीटर के लिए ग्रिपिंग केवल सीमित स्थितियों में काम करता है, जैसे MongoDB 3.0, जहां पैरामीटर स्पष्ट रूप से कमांड लाइन पर प्रदान किया जाता है। आमतौर पर mongodकॉन्फ़िगरेशन मान कॉन्फ़िगरेशन फ़ाइल में प्रदान किए जाते हैं ताकि वे psआउटपुट में प्रकट न हों । MongoDB में 3.2+ WiredTiger डिफ़ॉल्ट स्टोरेज इंजन है इसलिए कोई अतिरिक्त पैरामीटर की आवश्यकता नहीं है। उपयोग करने के लिए अनुशंसित दृष्टिकोण शेल के db.serverStatus().storageEngine.nameमाध्यम से आपका दूसरा सुझाव है mongo। FYI करें, यदि आप MongoDB 2.6 या पुराने का उपयोग कर रहे हैं तो यह काम नहीं करेगा: केवल संग्रहण इंजन MMAP था।
स्टेनी

1

mongod.logफ़ाइल के लिए एक स्ट्रिंग जो आप उपयोग कर रहे क्या भंडारण इंजन का वर्णन करता है की आबादी हो जाता है;
तो आप चला सकते हैं:

cat /var/log/mongodb/mongod.log  | grep STORAGE | tail -n 1

जो कुछ इस तरह लौटाता है:

2017-06-28T21:45:24.745+0200 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=4G,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.