Veri dizini değiştirildikten sonra MongoDB başlamıyor


10

Yummongodb kullanarak bir örnek yükledim . . Şimdi her şey yolunda gidiyor. Hizmeti kullanarak başlattım service mongod start. İyi çalışıyor. Sonra yapılandırma dosyasında data directoryve değiştirdim log path. Sunucuyu yeniden başlattım ve hizmeti başlattım. Ama aşağıdaki hatayı alıyorum:

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

Verdiğim zaman systemctl status mongod.serviceaşağıdakileri alıyorum:

 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.

Verdiğim zaman journalctl -xnaşağıdakileri alıyorum:

-- 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

Birisi bunu düzeltmeme yardımcı olabilir mi? Teşekkürler!!!

Not : Oluşturduğum veri dizini kullanıcı için tüm izinlere sahip. Ama tekrar veri dizini varsayılan ( /var/lib/mongodb) değiştirmek ben iyi çalışıyor.

Yanıtlar:


6

Benzer bir sorunla karşılaştım ve mongod.confbenim durumumda yanlış yapılandırılmış bir dosya buldum. Yeni dizindeki izinler düzgün ayarlanmamış olabilir. chown -R mongod:mongod <directory name>(ve tabii ki) erişimi nasıl sağladığım oldu chmod 600 <dir>. Son olarak, ls -Zbağlamın doğru olduğundan emin olmak için bir komutunu çalıştırın . Sadece benim için çalışan varsayılan dizine kıyasla.

Bu sorun çözülmediyse, lütfen günlük dosyanızın içeriğini de gösterin. Orada bazı ipuçları olabilir.


4

@Mustaccio'nun söylediklerine genişleyen, benim için yanıt, yeni logpathve dbpath. Aşağıdaki komutları çalıştırdım ve her şey yolundaydı:

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

(bu RHEL 7.1 btw üzerindeydi)


4

Ben Raspberry Pi ve Ubuntu sunucum vardı.

“Mongod.service işi başarısız oldu. Ayrıntılar için bkz. 'Systemctl status mongod.service' ve 'journalctl -xn'. ”

Bu sorunu farklı nedenlerle farklı durumlarda yaşadım:

  1. .Conf dosyasını Mis adlı (I taşındı mongodb komut - /etc/init.d/mongodb), hat 57 CONF=/etc/mongod.confbenim gerçek dosya iken /etc/mongodb.conf. 57 nolu satırın değiştirilmesi düzeltildi. Ayrıca, komut dosyası adını da aynı şekilde değiştirebilirdim.

  2. mongod.lock dosyası - mongod en son durduğunda veritabanını kapatma şansı bulamadı. Bu, veritabanı klasörünüzde adlı bir dosya bırakır mongod.lock. Klasörün içinde bir sayı var (mongo'nun son kullandığı PID olduğuna inanıyorum). Bu dosya varsa, mongod hizmetini başlatamazsınız. Dosyayı silin ve tekrar deneyin.

  3. mongo kullanıcısı - mongod.service'in başlatılmasından ve çalıştırılmasından sorumlu olacak bir linux kullanıcısı oluşturmam gerekiyordu. Benimkine mongo adını verdim ve /etc/init.d/mongodbsenaryomu güncelledim, benim için 95. satır DAEMONUSER=${DAEMONUSER:-mongo}. Bu elbette sadece mongo adında yeni bir kullanıcı oluşturduysanız (veya ne istersen) çalışır.

  4. DB İzinleri - Bu popüler bir tanesidir. Veritabanı klasörünün nerede bulunacağını bildirdikten sonra 'mongo' kullanıcınızın bu dosyanın sahibi olduğundan emin olmanız gerekir. Örneğin, veritabanım adresinde depolanıyor /data/db. Aşağıdaki komutu çalıştırdım:
    sudo chown –R mongo:mongo /data
    ve bu /dataonun ve tüm alt dizinlerinin sahipliğini mongo kullanıcısına taşıdı .

  5. Yanlış servis - Bu benim için biraz utanç vericiydi. Bunun mongoyerine hizmet olarak başlamaya çalışıyordum mongod. mongoçalıştırabileceğiniz ve komutları manuel olarak doğrudan mongo'ya girebileceğiniz kabuktur. Veritabanımı bu şekilde oluşturdum ve örneğin birkaç nesne ekledim. mongodÖte yandan, yazdığınız / erişmek için kullandığınız diğer uygulamalar için veritabanınızı barındıran arka planda çalışan mongo arka plan programıdır. Bunları conf dosyalarınızda, komut dosyalarınızda vb.Karmadığınızdan emin olun.

Umarım bunlardan biri sizin için sorunu çözecektir.

Yan notta, dosyam mongodb.confboş. Boş olsa bile, doğru bir şekilde göstermeniz gerekir.


2

Bunu denedim ve işe yaradı.

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

Centos 7 Repos ile gelen mongodan Mongos kendi depolarına yükseltme yaparak bu problemle karşılaştım. Aslında V2'den V3'e yükseltme.

Centos 7 repo kullanıcı mongodb gerektirirken, mongos kendi repo kullanıcı mongod istiyor

Sonunda, kullanıcı adlarının farklı olması ve fark etmediğim için, yeni kurulumun yazamadığı eski kurulumdan hala var olan günlük dosyasıydı.


1

Sistemimde (Fedora) Bir tmpfs (ram) üzerinde "/ var / log" var, si bu bölümdeki her şeyi yeniden başlattığımda kayboluyor. Birçok insan buna SSD sürücüleri olduğundan ve G / Ç'yi (sürücü ömrünü uzatmak) azaltmak istedikleri için.

Çözüm, / var / log / mongodb dizinini oluşturmak ve sistem her yeniden başlatıldığında mongodb'u sahip olarak ayarlamaktır.

Şunun gibi bir komut dosyası kullanın:

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

Mongod tarafından kullanılan kullanıcının ne olduğundan emin değilseniz, sadece şunu yapın:

cat /etc/passwd | grep mongo

Komut dosyasını sistem başlangıcınıza ekleyin.


0

Yolu düzenlemezsiniz. Sorunu komutla çözdüm:

mongod --dbpath /data/mongo

0

Bu bir izin sorunudur. veri dizininin veya günlük dosyasının yolunu değiştirdiğimizde yeni dizine izin vermemiz gerekir. Sonra iyi çalışır. Eğer böyle bir sorun meydana gelirse, öncelikle "mongod.log" günlük dosyasını kontrol edin.


Bu yardımcı olmadı, mongod hizmetini çalıştıran kullanıcıya "Günlük" klasörüne tam izin verdim, Windows Server 2016 kullanıyorum. Günlük dosyasının yolunu değiştirdikten sonra yine de hizmeti yeniden başlatamıyorum hata: "Hizmet, kontrol işlevine yanıt vermiyor.", herhangi bir fikir lütfen?
Eddie Kumar

0

MongoDB Sunucusunu Durdurun:

service mongod stop

Moğol dizinini yeni dizine kopyala:

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

Eski dizini yeniden adlandır:

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

Symlink yeni konuma:

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

MongoDB Sunucusunu başlatın:

service mongod start
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.