Todo o arquivo mongod.lock
está dizendo que o DB teve um desligamento sujo, ou seja, não foi interrompido por um administrador, etc.
Ao executar uma operação --repair
, o mongod tentará ler os arquivos existentes, gravar novos arquivos e depois trocá-los. Depois de concluído, ele deve remover o arquivo mongod.lock e permitir que você inicialize o banco de dados.
Se usado em conjunto com --repairpath
argumento, o arquivo reparado será colocado no caminho de reparo especificado e o arquivo de bloqueio não pode ser removido, pois os arquivos de dados originais não foram reparados, em vez disso, novos arquivos foram escrito com os dados reparados e o caminho especificado.
Um possível fluxo de trabalho com --repairpath
:
-
Inicialização do serviço, a mensagem de registro informa sobre o problema de bloqueio, sai.
mongod --dbpath=/data/db
-
Você executa um comando de reparo semelhante a este:
mongod --dbpath=/data/db --repair --repairpath=/data/db2
e aguarde a conclusão.
-
Depois de concluído, inicie o mongod do caminho dos arquivos reparados:
mongod --dbpath=/data/db2
-
Uma vez confirmado o trabalho, você pode remover o diretório
/data/db
se desejar.
Tudo isso provavelmente pode ser eliminado "substituindo" os arquivos em /data/db/
por não usar a opção --repairpath.
Em relação à recuperação, dê uma olhada em Registro no diário - isso cria um diário de operação que é liberado para o disco permanente a cada 100ms, e quando mongod é iniciado e detecta arquivos de diário não aplicados e os aplica, remove o arquivo de bloqueio e inicializa o servidor.