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:
- Por padrão,
mongodespera 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ê executarmongoddiretamente, em vez de usar os scripts upstart, precisará informar onde seus arquivos de banco de dados estão adicionando um argumento--dbpath. - Ao executar
mongodusando upstart, ele será executado como o usuáriomongodb, que é o usuário que possui os arquivos do banco de dados. Se você executarmongodusandosudosem especificar um usuário, terminará com arquivos de banco de dados de propriedade deroot. Então você precisa adicionar um argumento-uasudo.
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/