जो मैं प्राप्त करना चाहता हूं वह एक /etc/init.d स्क्रिप्ट है जो अधिक विश्वसनीय रूप से मोंगोब शुरू होता है, भले ही यह कठिन हो जाए - इसे सिस्टम के मामले में ऑटो-रिपेयर का प्रयास करना चाहिए एक बंद राज्य में है।प्रोडक्शन में मोंगोब को पुनरारंभ/ऑटोरपेयरिंग
हां, मैं इसे स्वयं स्क्रिप्ट कर सकता हूं, लेकिन मुझे लगता है कि वहां से किसी ने पहले ही यह किया होगा।
मैंने देखा कि एक सर्वर के बाद कड़ी मेहनत हो जाती है, कि मोंगोड एक ऐसे राज्य में है जहां यह /etc/init.d/mongod स्क्रिप्ट के माध्यम से पुनरारंभ नहीं होता है। जाहिर है कि लॉक फ़ाइल को हटाया जाना चाहिए और इसे सफलतापूर्वक पुनरारंभ करने से पहले --repair विकल्प और सही - डीबीपीएथ के साथ शुरू करने की आवश्यकता है। कुछ मामलों में किसी को भी डब-फाइलों के स्वामित्व को उपयोगकर्ता को बदलने की आवश्यकता होती है जो मोंगोडब चलाता है। एक अतिरिक्त समस्या यह है कि मानक /etc/init.d/mongod स्क्रिप्ट इस स्थिति में विफलता की रिपोर्ट नहीं करती है, बल्कि "ठीक" स्थिति के साथ खुशी से और गलत तरीके से लौटती है, रिपोर्टिंग कि मोंगोद शुरू हुआ था, हालांकि यह नहीं था।
$ sudo /etc/init.d/mongod start
Starting mongod: forked process: 9220
all output going to: /data/mongo/log/mongod.log
[ OK ]
$ sudo /etc/init.d/mongod status
mongod dead but subsys locked
ओएस या तो सेंटोस या फेडोरा है।
क्या किसी ने /etc/init.d स्क्रिप्ट्स या ऐसी स्क्रिप्ट के लिए एक पॉइंटर संशोधित किया है, जो उस स्थिति में स्वचालित रूप से मरम्मत का प्रयास करता है? या क्या कोई और उपकरण है जो मोंगोद के लिए घड़ी कुत्ते के रूप में कार्य करता है?
कोई विचार क्यों मोगोडब को स्वचालित रूप से सुधारने का प्रयास करना बुरा विचार हो सकता है?
$ sudo /etc/init.d/mongod status
mongod dead but subsys locked
$ sudo ls -l /var/lib/mongo/mongod.lock
-rw-r--r--. 1 mongod mongod 5 Nov 19 11:52 /var/lib/mongo/mongod.lock
$ sudo tail -50 /data/mongo/log/mongod.log
**************
old lock file: /data/mongo/db/mongod.lock. probably means unclean shutdown
recommend removing file and running --repair
see: http://dochub.mongodb.org/core/repair for more information
*************
Sat Nov 19 11:55:44 exception in initAndListen std::exception: old lock file, terminating
Sat Nov 19 11:55:44 dbexit:
Sat Nov 19 11:55:44 shutdown: going to close listening sockets...
Sat Nov 19 11:55:44 shutdown: going to flush oplog...
Sat Nov 19 11:55:44 shutdown: going to close sockets...
Sat Nov 19 11:55:44 shutdown: waiting for fs preallocator...
Sat Nov 19 11:55:44 shutdown: closing all files...
Sat Nov 19 11:55:44 closeAllFiles() finished
Sat Nov 19 11:55:44 dbexit: really exiting now
आपके विस्तृत उत्तर के लिए धन्यवाद। जर्नलिंग जाने का रास्ता दिखता है .. उन्होंने किस संस्करण को जर्नलिंग शुरू किया? – Tilo
जर्नलिंग 1.8+ में पेश की गई थी, बस अपनी कॉन्फ़िगरेशन फ़ाइल में 'जर्नल = true' सेट करें। 2.0+ जर्नलिंग डिफ़ॉल्ट रूप से सक्रिय है। ध्यान दें कि जर्नलिंग "मुक्त" नहीं है। यह 32-बिट पर काम नहीं करता है, यह अतिरिक्त रैम, अतिरिक्त डिस्क स्पेस और अतिरिक्त आईओ का उपयोग करेगा। यदि आप बहुत सारे इन-प्लेस अपडेट (काउंटर जैसे) करते हैं, तो यह महत्वपूर्ण हो सकता है। तो उत्पादन के लिए एक धक्का धक्का से पहले जर्नलिंग मोड का परीक्षण करें। –
महान जवाब! हालांकि यह वास्तव में एक स्क्रिप्ट नहीं है :) जर्नलिंग शायद चाल चलती है। 32-बिट मेरे लिए कोई मुद्दा नहीं है। मैं जर्नलिंग की कोशिश करूंगा! आपकी सहायताके लिए धन्यवाद! – Tilo