MongoDB non si avvia dopo aver modificato la directory dei dati


10

Ho installato mongodbun'istanza usando yum. . Ora tutto funziona bene. Ho avviato il servizio utilizzando service mongod start. Funziona bene. Quindi ho modificato il data directorye log pathnel file di configurazione. Ho riavviato nuovamente il server e ho avviato il servizio. Ma ottengo l'errore di seguito:

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

Quando do systemctl status mongod.servicericevo il seguente:

 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.

Quando do journalctl -xnricevo il seguente:

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

Qualcuno può aiutarmi a risolvere questo problema? Grazie!!!

PS : la directory dei dati che ho creato ha tutte le autorizzazioni per l'utente. Ma di nuovo se cambio la directory dei dati in default ( /var/lib/mongodb) funziona benissimo.

Risposte:


6

Ho riscontrato un problema simile e mongod.confnel mio caso l'ho trovato un file non configurato correttamente . Potrebbe anche essere che le autorizzazioni per la nuova directory non siano impostate correttamente. chown -R mongod:mongod <directory name>è stato il modo in cui ho garantito l'accesso (e ovviamente chmod 600 <dir>anche quello). Infine, esegui un ls -Zper assicurarti che il contesto sia corretto. Ho appena confrontato con la directory predefinita che ha funzionato per me.

Se questo non è già stato risolto, si prega di mostrare anche il contenuto del file di registro. Ci possono essere alcuni indizi lì.


4

Espandendo ciò che ha detto @mustaccio, la risposta per me è stata il contesto SELinux sul nuovo logpathe dbpath. Ho eseguito i seguenti comandi e tutto è andato bene:

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

(questo era su RHEL 7.1 btw)


4

L'ho avuto su Raspberry Pi e sul mio server Ubuntu.

“Processo per mongod.service non riuscito. Vedi 'systemctl status mongod.service' e 'journalctl -xn' per i dettagli. "

Ho avuto questo problema in diverse occasioni per diversi motivi:

  1. File .conf con nome errato - Lo script mongodb (che ho spostato in /etc/init.d/mongodb), riga 57 CONF=/etc/mongod.confquando era il mio file effettivo /etc/mongodb.conf. La modifica della riga 57 l'ha corretta. Inoltre, avrei potuto cambiare lo stesso nome dello script.

  2. File mongod.lock - L'ultima volta che mongod si è fermato, non è stata possibile chiudere il database. Questo lascia un file nella cartella del database chiamato mongod.lock. All'interno della cartella è presente un numero (credo sia il PID utilizzato da mongo per ultimo). Se questo file esiste, non sarà possibile avviare il servizio mongod. Elimina il file e riprova.

  3. utente mongo - Avevo bisogno di creare un utente Linux che fosse responsabile dell'avvio e dell'esecuzione di mongod.service. Ho chiamato il mio mongo e ho aggiornato la mia /etc/init.d/mongodbsceneggiatura, linea 95 per me DAEMONUSER=${DAEMONUSER:-mongo}. Questo ovviamente funzionerà solo se hai creato un nuovo utente chiamato mongo (o qualunque cosa tu voglia, credo).

  4. Autorizzazioni DB : questa è popolare. Dopo aver dichiarato dove si trova la cartella del database, è necessario assicurarsi che l'utente "mongo" sia proprietario di quel file. Ad esempio, il mio database è archiviato in /data/db. Ho eseguito il seguente comando:
    sudo chown –R mongo:mongo /data
    e questo ha spostato la proprietà di /datae di tutte le sue sottodirectory sull'utente mongo.

  5. Servizio sbagliato - Questo è stato un po 'imbarazzante per me. Stavo cercando di iniziare mongocome servizio anziché mongod. mongoè la shell che è possibile eseguire e immettere manualmente i comandi direttamente su mongo. È così che ho creato il mio database e ho aggiunto alcuni oggetti, ad esempio. mongodd'altra parte è il demone mongo che gira in background e ospita il tuo database per altre applicazioni a cui scrivi / usi per accedere. Assicurati di non mescolarli ovunque nei tuoi file conf, script, ecc.

Spero che uno di questi risolva il problema per te.

In una nota a margine, il mio mongodb.conffile è vuoto. Anche con vuoto, tuttavia, è necessario puntarlo correttamente.


2

Ho provato questo e ha funzionato.

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

Ho riscontrato questo problema aggiornando da mongo che viene fornito con Centos 7 Repos, ai repository di Mongos. In effetti aggiornamento da V2 a V3.

Si scopre che il repository centos 7 richiede l'utente mongodb , mentre il repository mongos vuole l'utente mongod

Alla fine era il file di registro che esisteva ancora dalla vecchia installazione a cui la nuova installazione non poteva scrivere, poiché i nomi utente erano diversi e non me ne ero accorto.


1

Sul mio sistema (Fedora) ho "/ var / log" su un tmpfs (ram), si ogni volta che riavvio tutto si perde su quella partizione. Molte persone a questo perché hanno unità SSD e vogliono ridurre l'I / O (risparmiando la durata dell'unità).

La soluzione è creare la directory / var / log / mongodb e impostare mongodb come proprietario ogni volta che il sistema si riavvia.

Usa uno script come:

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

Se non si è sicuri di quale sia l'utente utilizzato da Mongong basta:

cat /etc/passwd | grep mongo

Aggiungi lo script all'avvio del tuo sistema.


0

Non si modifica il percorso. Ho risolto il problema con il comando:

mongod --dbpath /data/mongo

0

Questo è un problema di autorizzazione. quando cambiamo il percorso della directory dei dati o del file di registro, dobbiamo concedere le autorizzazioni alla nuova directory. Quindi funziona bene. Se si sono verificati problemi di questo tipo, verificare innanzitutto il file di registro "mongod.log".


Questo non ha aiutato, ho dato piena autorizzazione alla cartella "Log" all'utente che esegue il servizio mongod, sto usando Windows Server 2016. Non riesco ancora a riavviare il servizio dopo aver modificato il percorso del file di registro, ottenendo comunque errore: "Il servizio non risponde alla funzione di controllo". Qualche idea per favore?
Eddie Kumar,

0

Arresta MongoDB Server:

service mongod stop

Copia la directory mongo nella nuova directory:

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

Rinomina directory precedente:

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

Collegamento simbolico alla nuova posizione:

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

Avviare MongoDB Server:

service mongod start
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.