Ao tentar subir os serviços do MongoDB surge o seguinte erro
old lock file: /data/db/mongod.lock. probably means unclean shutdown recommend removing file and running --repair see: http://dochub.mongodb.org/core/repair for more information
Este erro ocorre também quando encerramos o MongoDB de maneira errada, como por exemplo, um Kill no processo mongod, quando a maneira correta seria executar o comando db.shutdownServer() no console.
Como resolver este problema:
Você deve ir ao diretório /data/db caso tenha efetuado uma inicialização default e localizar o arquivo mongod.lock.
-rwxr-xr-x. 1 mongod mongod 5 May 16 13:26 mongod.lock
Caso o diretório não exista, calma, execute um find
[root@Mongo01 /]# find / -name mongod.lock
/var/lib/mongo/mongod.lock
Pronto, agora verifique o tamanho do arquivo
-rwxr-xr-x. 1 mongod mongod 5 May 16 13:26 mongod.lock
Se o arquivo mongod.lock no diretório especificado pelo dbpath, seja /data/db por padrão ou outro de sua preferêrncia, não for um arquivo de zero bytes, então o mongod irá se recusas a iniciar.
Como você pode ver acima, o arquivo não está com 0 Bytes, portanto, podemos proceder de duas maneiras :
- Deletar o arquivo mongod.lock
Para limpar seus arquivos de dados sem preservar os arquivos originais, não utilize a opção-repairpath
a.Remova o arquivo de bloqueio obsoleto
rm /data/db/mongod.lock
Substitua /data/db com seu dbpath onde estão os arquivos de dados do MongoDB.
Atenção: Depois de remover o arquivo mongod.lock você deve executar o processo de reparação (-repair) de antes de usar o banco de dados.
b. Inicie o MongoDB utilizando o comando -repair para ler os arquivos de dados já existentes
mongod --dbpath /data/db --repair
Quando isso for concluído, os arquivos de dados reparados irão substituir os arquivos de dados originais no diretório /data/db.
c.Inicie o mongod usando a seguinte a seguinte linha de comando para apontar o dbpath para /data/db:
mongod --dbpath /data/db
2. Restaurando o MongoDB através do -repair
a. Crie um novo diretório para o dbpath
mongod –dbpath /data/db –repair –repairpath /data/db0
Com isso o Mongo irá criar um novo diretório e mover o arquivo de bloqueio antigo / reparado para o novo diretório. Para evitar problemas com permissões. você pode criar manualmente o novo diretório:
sudo mkdir /data/db/db0
Após executar o repair, você pode acompanhar o feedback na linha de comando
[root@Mongo01 mongo] sudo mongod –dbpath /data/db –repair –repairpath /data/db0
Sun Jan 6 22:33:30 Mongo DB : starting : pid = 16652 port = 27017 dbpath = /data/db master = 0 slave = 0 32-bit
Sun Jan 6 22:33:30 finished checking dbs
Sun Jan 6 22:33:30 dbexit:
Sun Jan 6 22:33:30 shutdown: going to close listening sockets…
Sun Jan 6 22:33:30 shutdown: going to flush oplog…
Sun Jan 6 22:33:30 shutdown: going to close sockets…
Sun Jan 6 22:33:30 shutdown: waiting for fs preallocator…
Sun Jan 6 22:33:30 shutdown: closing all files…
Sun Jan 6 22:33:30 closeAllFiles() finished
Sun Jan 6 22:33:30 shutdown: removing fs lock…
Sun Jan 6 22:33:30 dbexit: really exiting now
Pronto, seu ambiente está novamente operacional.
0 comentários:
Postar um comentário