sexta-feira, 16 de maio de 2014

Hoje veremos o que as vezes ocorre quando enfrentamos um desligamento ou  até mesmo um reboot em um servidor MongoDB.

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 :

  1. 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

Blog Archive

SmarttNet Solution Provider. Tecnologia do Blogger.

Postagens populares

Twitter MongoDBBrazil

Total de visualizações de página