MongoDB डेटा निर्देशिका को बदलने के बाद शुरू नहीं होता है


10

मैंने yummongodb का उपयोग करके एक इंस्टालेशन स्थापित किया है । अब सब कुछ ठीक है। मैंने सेवा का उपयोग शुरू कर दिया service mongod start। यह अच्छा काम करता है। फिर मैंने कॉन्फ़िगरेशन फ़ाइल में data directoryऔर बदल दिया log path। मैंने सर्वर को फिर से शुरू किया और मैंने सेवा शुरू की। लेकिन मुझे निम्न त्रुटि मिलती है:

Restarting mongod (via systemctl):  Job for mongod.service failed. See 'systemctl status mongod.service' and 'journalctl -xn' for details.
                                                           [FAILED]

जब मैं देता systemctl status mongod.serviceहूं मुझे नीचे मिलता है:

 Loaded: loaded (/etc/rc.d/init.d/mongod)
   Active: failed (Result: exit-code) since Wed 2015-03-18 11:35:56 IST; 22s ago
  Process: 10672 ExecStop=/etc/rc.d/init.d/mongod stop (code=exited, status=0/SUCCESS)
  Process: 10841 ExecStart=/etc/rc.d/init.d/mongod start (code=exited, status=1/FAILURE)
 Main PID: 10509 (code=exited, status=0/SUCCESS)

Mar 18 11:35:56 localhost systemd[1]: Starting SYSV: Mongo is a scalable, document-oriented database....
Mar 18 11:35:56 localhost runuser[10850]: pam_unix(runuser:session): session opened for user mongod by (uid=0)
Mar 18 11:35:56 localhost runuser[10850]: pam_unix(runuser:session): session closed for user mongod
Mar 18 11:35:56 localhost mongod[10841]: Starting mongod: [FAILED]
Mar 18 11:35:56 localhost systemd[1]: mongod.service: control process exited, code=exited status=1
Mar 18 11:35:56 localhost systemd[1]: Failed to start SYSV: Mongo is a scalable, document-oriented database..
Mar 18 11:35:56 localhost systemd[1]: Unit mongod.service entered failed state.

जब मैं देता journalctl -xnहूं मुझे नीचे मिलता है:

-- Logs begin at Wed 2015-03-18 08:56:56 IST, end at Wed 2015-03-18 11:35:56 IST. --
Mar 18 11:30:01 localhost systemd[1]: Starting Session 20 of user root.
-- Subject: Unit session-20.scope has begun with start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit session-20.scope has begun starting up.
Mar 18 11:30:01 localhost systemd[1]: Started Session 20 of user root.
-- Subject: Unit session-20.scope has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit session-20.scope has finished starting up.
-- 
-- The start-up result is done.
Mar 18 11:30:01 localhost CROND[10712]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Mar 18 11:35:56 localhost systemd[1]: Starting SYSV: Mongo is a scalable, document-oriented database....
-- Subject: Unit mongod.service has begun with start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit mongod.service has begun starting up.
Mar 18 11:35:56 localhost runuser[10850]: pam_unix(runuser:session): session opened for user mongod by (uid=0)
Mar 18 11:35:56 localhost runuser[10850]: pam_unix(runuser:session): session closed for user mongod
Mar 18 11:35:56 localhost mongod[10841]: Starting mongod: [FAILED]
Mar 18 11:35:56 localhost systemd[1]: mongod.service: control process exited, code=exited status=1
Mar 18 11:35:56 localhost systemd[1]: Failed to start SYSV: Mongo is a scalable, document-oriented database..
-- Subject: Unit mongod.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel

क्या कोई मुझे इसे ठीक करने में मदद कर सकता है? धन्यवाद!!!

PS : मेरे द्वारा बनाई गई डेटा निर्देशिका में उपयोगकर्ता के लिए सभी अनुमतियां हैं। लेकिन अगर मैं डेटा निर्देशिका को डिफ़ॉल्ट में बदल देता हूं (तो /var/lib/mongodb) यह ठीक काम करता है।

जवाबों:


6

मैं एक समान मुद्दे में भाग गया और इसे mongod.confमेरे मामले में एक गलत फाइल के रूप में पाया । यह भी हो सकता है कि नई निर्देशिका पर अनुमतियाँ ठीक से सेट नहीं हैं। chown -R mongod:mongod <directory name>मैं कैसे (और chmod 600 <dir>साथ ही) का उपयोग सुनिश्चित किया था । अंत में, ls -Zसंदर्भ सही है यह सुनिश्चित करने के लिए एक चलाएं । मैं सिर्फ डिफ़ॉल्ट निर्देशिका की तुलना में हूं जो मेरे लिए काम करती है।

यदि यह पहले से ही हल नहीं है, तो कृपया अपनी लॉग फ़ाइल की सामग्री भी दिखाएं। वहां कुछ सुराग मिल सकते हैं।


4

@Mustaccio ने जो कहा, उस पर विस्तार करते हुए, मेरे लिए जवाब नए पर SELinux संदर्भ था logpathऔर dbpath। मैंने निम्नलिखित कमांड चलाईं और सब ठीक रहा:

sudo chcon -Rv --type=mongod_log_t $logpath
sudo chcon -Rv --type=mongod_var_lib_t $dbpath

(यह RHEL 7.1 btw पर था)


4

मैं रास्पबेरी पाई पर और साथ ही अपने उबंटू सर्वर पर था।

“Mongod.service के लिए नौकरी विफल रही। विवरण के लिए 'systemctl स्टेटस mongod.service' और 'journalctl -xn' देखें। "

मेरे पास अलग-अलग कारणों से अलग-अलग अवसरों पर यह मुद्दा था:

  1. मिस-नामित .conf फ़ाइल - मोंगोडब स्क्रिप्ट (जिसे मैं स्थानांतरित कर दिया गया /etc/init.d/mongodb), पंक्ति 57 CONF=/etc/mongod.confजब मेरी वास्तविक फ़ाइल थी /etc/mongodb.conf। 57 को बदलकर लाइन को दुरुस्त किया। साथ ही, मैं स्क्रिप्ट का नाम भी बदल सकता था।

  2. mongod.lock फ़ाइल - पिछली बार mongod बंद होने पर इसे डेटाबेस को बंद करने का मौका नहीं मिला। यह आपके डेटाबेस फ़ोल्डर में एक फ़ाइल छोड़ देता है जिसे कहा जाता है mongod.lock। फ़ोल्डर के अंदर एक संख्या है (मेरा मानना ​​है कि यह पीआईडी ​​है जो मोंगो अंतिम उपयोग कर रहा था)। यदि यह फ़ाइल मौजूद है, तो आप मोंगॉड सेवा शुरू नहीं कर पाएंगे। फ़ाइल हटाएं और पुनः प्रयास करें।

  3. mongo उपयोगकर्ता - मुझे एक linux उपयोगकर्ता बनाने की आवश्यकता है जो mongod.service को शुरू करने और चलाने के लिए जिम्मेदार होगा। मैंने अपना मोंगो नाम दिया और अपनी /etc/init.d/mongodbस्क्रिप्ट, लाइन 95 को मेरे लिए अपडेट किया , कहने के लिए DAEMONUSER=${DAEMONUSER:-mongo}। यह निश्चित रूप से केवल तभी काम करेगा जब आपने एक नया उपयोगकर्ता बनाया है जिसका नाम मोंगो है (या जो आप चाहते हैं कि मुझे लगता है)।

  4. DB अनुमतियाँ - यह एक लोकप्रिय एक है। एक बार जब आप घोषित करते हैं कि डेटाबेस फ़ोल्डर कहाँ स्थित होगा तो आपको यह सुनिश्चित करना होगा कि आपके 'mongo' उपयोगकर्ता के पास उस फ़ाइल का स्वामित्व है। उदाहरण के लिए, मेरा डेटाबेस संग्रहीत है /data/db। मैंने निम्न कमांड चलाई:
    sudo chown –R mongo:mongo /data
    और यह /dataमूंगो उपयोगकर्ता के लिए और इसके सभी उप-निर्देशिकाओं का स्वामित्व ले गया ।

  5. गलत सेवा - यह मेरे लिए थोड़ा शर्मनाक था। मैं mongoइसके बजाय सेवा के रूप में शुरू करने की कोशिश कर रहा था mongodmongoवह शेल है जिसे आप चला सकते हैं और कमांड को मैन्युअल रूप से सीधे mongo पर इनपुट कर सकते हैं। इस तरह मैंने अपना डेटाबेस बनाया और उदाहरण के लिए कुछ ऑब्जेक्ट जोड़े। mongodदूसरी ओर, मोंगो डेमॉन है जो पृष्ठभूमि में चलता है जो आपके द्वारा लिखे गए अन्य अनुप्रयोगों के डेटाबेस को एक्सेस करने के लिए उपयोग / उपयोग करता है। सुनिश्चित करें कि आप उन्हें अपनी गोपनीय फाइलों, लिपियों आदि में कहीं भी नहीं मिलाते हैं।

आशा है कि इनमें से एक आपके लिए समस्या को ठीक कर देगा।

एक साइड नोट पर, मेरी mongodb.confफ़ाइल खाली है। यहां तक ​​कि इसके खाली होने पर भी, आपको इसे सही ढंग से इंगित करने की आवश्यकता है।


2

मैंने यह कोशिश की है और यह काम किया है।

sudo chown -R mongodb:mongodb /var/log/mongodb
sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chmod -R 755 /var/lib/mongodb
sudo chmod -R 755 /var/log/mongodb

1

मैं मोंगो से रिपॉजिट होकर इस समस्या में भाग गया कि सेंटोस 7 रिपोज के साथ आता है, मोंगोस के ही रिपोज के लिए। V2 से V3 में अपग्रेड करने में।

यह बताता है कि सेंटो 7 रेपो को उपयोगकर्ता की आवश्यकता होती है , जबकि मोंगो खुद के रेपो उपयोगकर्ता को मंगोल चाहते हैं

अंत में यह लॉग फ़ाइल थी जो अभी भी पुराने इंस्टॉलेशन से अस्तित्व में थी जो कि नया इंस्टॉलेशन नहीं लिख सकता था, क्योंकि उपयोगकर्ता नाम अलग थे और मैंने ध्यान नहीं दिया था।


1

अपने सिस्टम (फेडोरा) पर मेरे पास एक tmpfs (रैम) पर "/ var / log" है, प्रत्येक बार जब मैं उस विभाजन पर सब कुछ रिबूट करता हूं तो वह खो जाता है। बहुत से लोग इसके लिए क्योंकि उनके पास SSD ड्राइव हैं और I / O (जीवनकाल को सहेजते हुए) को कम करना चाहते हैं।

समाधान यह है कि / var / log / mongodb निर्देशिका बनाएं और mongodb को हर बार सिस्टम रिबूट के मालिक के रूप में सेट करें।

स्क्रिप्ट का उपयोग करें जैसे:

#!/bin/sh
sudo mkdir /var/log/mongodb
sudo chown mongodb:mongodb /var/log/mongodb

यदि आप सुनिश्चित नहीं हैं कि उपयोगकर्ता केवल mongod द्वारा क्या उपयोग करता है:

cat /etc/passwd | grep mongo

स्क्रिप्ट को अपने सिस्टम स्टार्टअप में जोड़ें।


0

आप पथ को संपादित नहीं करते हैं। मैंने कमांड से समस्या हल की:

mongod --dbpath /data/mongo

0

यह एक अनुमति मुद्दा है। जब हम डेटा डायरेक्टरी या लॉग फाइल का रास्ता बदलते हैं तो हमें नई डायरेक्टरी को परमिशन देनी होती है। फिर ठीक चलता है। यदि इस तरह की कोई समस्या हुई है तो सबसे पहले लॉग फाइल "mongod.log" की जाँच करें।


इसने मदद नहीं की, मैंने मूंगोड सेवा चलाने वाले उपयोगकर्ता को "लॉग" फ़ोल्डर की पूरी अनुमति दी, मैं विंडोज सर्वर 2016 का उपयोग कर रहा हूं। फिर भी लॉग फ़ाइल में पथ बदलने के बाद भी सेवा को पुनरारंभ नहीं किया जा सकता है, फिर भी प्राप्त कर रहा है त्रुटि: "सेवा नियंत्रण फ़ंक्शन का जवाब नहीं दे रही है।", कोई विचार कृपया?
एडी कुमार

0

बंद करो MongoDB सर्वर:

service mongod stop

Mongo निर्देशिका को नई निर्देशिका में कॉपी करें:

rsync -av /var/lib/mongo /home/data/

पुरानी निर्देशिका का नाम बदलें:

mv /var/lib/mongo /var/lib/mongo.bak

नए स्थान पर सिमिंक करें:

ln -s /home/data/mongo /var/lib/mongo

MongoDB सर्वर प्रारंभ करें:

service mongod start
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.