De repente, o MongoDB parou de funcionar hoje (12.04)

8

Depois de atualizar para o 12.04 há um ou dois meses, instalei o MongoDB via APT. Desde então, tem funcionado bem. Não fiz alterações na configuração nem nada - apenas funcionou imediatamente.

Hoje, ele não foi iniciado. Quando fiz logon, repentinamente tive um erro "não foi possível conectar a nenhum servidor da lista" no meu aplicativo e verifiquei e mongodnão estava em execução.

ls -al /var/lib/mongodb

Não mostra *.lockarquivos.

$ /etc/init.d/mongodb start
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mongodb start

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the start(8) utility, e.g. start mongodb
start: Rejected send message, 1 matched rules; type="method_call", sender=":1.89" (uid=1000 pid=4284 comm="start mongodb ") interface="com.ubuntu.Upstart0_6.Job" member="Start" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")

Então eu tentei sudo mongod --repair

Mon Aug 13 12:16:48 [initandlisten] MongoDB starting : pid=4350 port=27017 dbpath=/data/db/ 64-bit host=computer-localhost
Mon Aug 13 12:16:48 [initandlisten] db version v2.0.4, pdfile version 4.5
Mon Aug 13 12:16:48 [initandlisten] git version: nogitversion
Mon Aug 13 12:16:48 [initandlisten] build info: Linux yellow 2.6.24-29-server #1 SMP Tue Oct 11 15:57:27 UTC 2011 x86_64 BOOST_LIB_VERSION=1_46_1
Mon Aug 13 12:16:48 [initandlisten] options: { repair: true }
Mon Aug 13 12:16:48 [initandlisten] exception in initAndListen: 10296 dbpath (/data/db/) does not exist, terminating
Mon Aug 13 12:16:48 dbexit: 
Mon Aug 13 12:16:48 [initandlisten] shutdown: going to close listening sockets...
Mon Aug 13 12:16:48 [initandlisten] shutdown: going to flush diaglog...
Mon Aug 13 12:16:48 [initandlisten] shutdown: going to close sockets...
Mon Aug 13 12:16:48 [initandlisten] shutdown: waiting for fs preallocator...
Mon Aug 13 12:16:48 [initandlisten] shutdown: lock for final commit...
Mon Aug 13 12:16:48 [initandlisten] shutdown: final commit...
Mon Aug 13 12:16:48 [initandlisten] shutdown: closing all files...
Mon Aug 13 12:16:48 [initandlisten] closeAllFiles() finished
Mon Aug 13 12:16:48 dbexit: really exiting now

Alguma idéia do que está errado?

Atualizar

Então eu tentei sudo service mongodb starte finalmente começou (eu tentei isso várias vezes antes)

mongodb start/running, process 4376
Xeoncross
fonte

Respostas:

13

Diagnóstico

A primeira coisa a fazer é verificar os arquivos de log do MongoDB para ver por que o serviço não foi iniciado. Corre:

tail -f /var/log/mongodb/mongodb.log

em uma janela do terminal e execute:

sudo service mongodb restart

noutro. O arquivo de log deve mostrar o MongoDB tentando iniciar e relatar uma mensagem de erro se falhar.

Reparar

Se os logs indicarem que você precisa reparar seu banco de dados, há dois pontos em consideração:

  1. Por padrão, mongodespera que os arquivos do banco de dados estejam /data/db/, mas os pacotes do Ubuntu o configuram para procurar /var/lib/mongodb/. Portanto, se você executar mongoddiretamente, em vez de usar os scripts iniciais, precisará informar onde estão os arquivos do banco de dados, adicionando um --dbpathargumento.
  2. Ao executar o mongodupstart, ele será executado como mongodbo usuário que possui os arquivos do banco de dados. Se você executar mongodusando sudosem especificar um usuário, você terminará com os arquivos de banco de dados pertencentes a root. Então você precisa adicionar um -uargumento para sudo.

Se seus arquivos de banco de dados pertencerem atualmente, rootvocê precisará alterar a propriedade novamente para que o mongodbMongoDB possa usá-los novamente:

sudo chown -R mongodb:mongodb /var/lib/mongodb/

TL; DR

Para executar um reparo no MongoDB ao usar a distribuição empacotada, é necessário executar:

sudo -u mongodb mongod --repair --dbpath /var/lib/mongodb/
David Edwards
fonte
4

Eu também tive o mesmo problema e o resolvi. Quando eu tentei começar mongodbcom sudoele mostrou o processo já estava em execução ( ). Mas não consigo acessar a instância em execução através do shell. Ele mostrou que a conexão falhou .mongodb start/running, process xxxx

A solução

Então eu apaguei o arquivo de bloqueio:

sudo rm /var/lib/mongodb/mongod.lock

Então eu reiniciei o serviço:

sudo service mongodb start

Então Mongo trabalhou na minha máquina novamente!

Damodaran
fonte
0

Eu também tive um problema semelhante ao iniciar o mongod.exe na minha máquina (instalação do Windows). O .lockarquivo C:\data\dbestava causando o problema. Excluí esse arquivo e o problema foi resolvido.

George Joseph
fonte
0

Teve um problema semelhante, a causa era meio estúpida; Eu estava sem espaço em disco.

Verificando os logs em /var/log/mongodb/mongod.log, localizei a seguinte linha:

2015-04-13T10:56:37.132+0200 [initandlisten] ERROR: Insufficient free space for journal files

Esperar que isso salve alguém meia hora de sua vida.

Edo
fonte