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,
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ê executarmongod
diretamente, em vez de usar os scripts upstart, precisará informar onde seus arquivos de banco de dados estão adicionando um argumento--dbpath
. - Ao executar
mongod
usando upstart, ele será executado como o usuáriomongodb
, que é o usuário que possui os arquivos do banco de dados. Se você executarmongod
usandosudo
sem especificar um usuário, terminará com arquivos de banco de dados de propriedade deroot
. Então você precisa adicionar um argumento-u
asudo
.
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/