MongoDB parou de funcionar hoje (12.04)

8

Depois de atualizar para 12.04 um mês ou dois atrás, instalei o MongoDB via APT. Desde então, funcionou bem. Eu não fiz alterações na configuração ou nada - apenas funcionou da caixa.

Hoje ele não começou, quando eu fiz logon, de repente, tive um erro "não consegui conectar a nenhum servidor na lista" em meu aplicativo e verifiquei e mongod não estava em execução.

ls -al /var/lib/mongodb

Não mostra arquivos *.lock .

$ /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 ideia do que está errado?

Atualizar

Então eu tentei sudo service mongodb start e finalmente comecei (tentei isso várias vezes antes)

mongodb start/running, process 4376
    
por Xeoncross 13.08.2012 / 19:20

4 respostas

12

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. Executar:

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

em uma janela de terminal e, em seguida, execute:

sudo service mongodb restart

em outro. O arquivo de log deve mostrar o MongoDB tentando iniciar e reportar uma mensagem de erro se falhar.

Reparo

Se os registros indicarem que você precisa reparar seu banco de dados, há dois pontos a serem lembrados:

  1. Por padrão, mongod espera que os arquivos do banco de dados estejam em /data/db/ , mas os pacotes do Ubuntu o configuram para procurar em /var/lib/mongodb/ . Portanto, se você executar mongod diretamente, em vez de usar os scripts upstart, precisará informar onde seus arquivos de banco de dados estão adicionando um argumento --dbpath .
  2. Ao executar mongod usando upstart, ele será executado como o usuário mongodb , que é o usuário que possui os arquivos do banco de dados. Se você executar mongod usando sudo sem especificar um usuário, terminará com arquivos de banco de dados de propriedade de root . Então você precisa adicionar um argumento -u a sudo .

Se os seus arquivos de banco de dados forem de propriedade de root , você precisará alterar a propriedade deles de volta para mongodb antes que o MongoDB 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, você precisa executar:

sudo -u mongodb mongod --repair --dbpath /var/lib/mongodb/
    
por David Edwards 29.11.2012 / 09:27
4

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

A solução

Então eu apaguei o arquivo de bloqueio:

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

Então reiniciei o serviço:

sudo service mongodb start

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

    
por Damodaran 07.12.2012 / 14:54
0

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

    
por George Joseph 30.08.2013 / 19:31
0

Teve um problema semelhante, porque era meio idiota; Eu estava sem espaço em disco.

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

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

Esperando que isso economize alguém meia hora de vida.

    
por Edo 13.04.2015 / 11:04

Tags