Reparar o MongoDB no Ubuntu

janeiro 25th, 2012 | by tiago | mongodb

jan
25

Nesse post vou explicar como reparar o MongoDB no Ubuntu de forma fácil e rapida. Eu particularmente tive um problema com o mongo esses dias, onde sempre que eu tentava efetuar uma conexão com o mongo recebia o seguinte erro:

Error: couldn't connect to server 127.0.0.1} (anon):1137

Pesquisando um pouco na net, descobri que esse erro acontece devido algum desligamento incorreto efetuado anteriormente. Vamos ver agora como corrigir.

Por que o mongodb não inicia?

Infelizmente até o momento o mongodb não consegue se recuperar muito bem quando ele crasha o que nos força a ter que recuperá-lo na unha.

  1. Para iniciar vamos tentar conectar no mongo (digite mongo no terminal). Você provavelmente recebeu o erro citado acima.
  2. Agora vamos verificar se ele está rodando.  Para isso digite sudo status mongodb, isso deverá retornar  mongodb stop/waiting.
  3. Tente iniciar o serviço com o comando sudo start mongodb. No terminal vai aparecer que o serviço foi iniciado (mongodb start/running, process XXXX), porém se você der um sudo status mondodb novamente, verá que ele continua parado stop/waiting.
  4. Abra o arquivo de logs do mongo para ver se o seu problema é igual o meu. Ele fica em /var/log/mongodb/mongodb.log.
**************
old lock file: /var/lib/mongodb/mongod.lock.  probably means unclean
shutdown
recommend removing file and running --repair
see: http://dochub.mongodb.org/core/repair for more information
*************

Vamos agora a correção do problema:

  1. Vamos remover manualmente o arquivo .lock com o comando: sudo rm /var/lib/mongodb/mongod.lock
  2. Agora vamos executar o script para reparar o mongo: sudo -u mongodb mongod -f /etc/mongodb.conf --repair.
  3. Após executar o script inicie o serviço do mongo: sudo start mongodb. Verifique se o serviço está mesmo rodando(sudo status mondodb) e depois tente conectar a base de test(mongo test).

Espero que isso ajude todos que tiverem o mesmo problema que eu.

Valeu galera e até a próxima!

1 Comment »