Introdução
Este documento descreve como reparar o MongoDB no dispositivo Secure Network Analytics (anteriormente Stealthwatch) Manager após um desligamento não limpo.
Pré-requisitos
Requisitos
Não existem requisitos específicos para este documento.
Componentes Utilizados
Este documento não se restringe a versões de software e hardware específicas.
As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a sua rede estiver ativa, certifique-se de que você compreende o impacto potencial de qualquer comando."
Revisar dados de log
Use o comando para revisar o arquivo mongodb.log.
732smc:~# less /lancope/var/mongodb/log/mongodb.log
2021-06-21T14:54:43.029+0000 I CONTROL ***** SERVER RESTARTED *****
2021-06-21T14:54:43.033+0000 I CONTROL [initandlisten] MongoDB starting : pid=87057 port=27017 dbpath=/lancope/var/database/dbs/mdb/ 64-bit host=ussecrapstwsmc1
2021-06-21T14:54:43.033+0000 I CONTROL [initandlisten] db version v3.0.15
2021-06-21T14:54:43.033+0000 I CONTROL [initandlisten] git version: b8ff507269c382bc100fc52f75f48d54cd42ec3b
2021-06-21T14:54:43.033+0000 I CONTROL [initandlisten] build info: Linux 3555b2234f08 4.9.0-2-amd64 #1 SMP Debian 4.9.13-1 (2017-02-27) x86_64 BOOST_LIB_VERSION=1_49
2021-06-21T14:54:43.033+0000 I CONTROL [initandlisten] allocator: tcmalloc
2021-06-21T14:54:43.033+0000 I CONTROL [initandlisten] options: { config: "/etc/mongodb/mongodb.conf", net: { port: 27017 }, processManagement: { fork: true }, storage: { dbPath: "/lancope/var/database/dbs/mdb/" }, systemLog: { destination: "file", logAppend: true, path: "/lancope/var/mongodb/log/mongodb.log" } }
2021-06-21T14:54:43.050+0000 W - [initandlisten] Detected unclean shutdown - /lancope/var/database/dbs/mdb/mongod.lock is not empty.
2021-06-21T14:54:43.063+0000 I STORAGE [initandlisten] **************
old lock file: /lancope/var/database/dbs/mdb/mongod.lock. probably means unclean shutdown,
but there are no journal files to recover.
this is likely human error or filesystem corruption.
please make sure that your journal directory is mounted.
found 2 dbs.
see: http://dochub.mongodb.org/core/repair for more information
*************
2021-06-21T14:54:43.063+0000 I STORAGE [initandlisten] exception in initAndListen: 12596 old lock file, terminating
2021-06-21T14:54:43.063+0000 I CONTROL [initandlisten] dbexit: rc: 100
Reparar o Banco de Dados se ele não for iniciado
Etapa 1. Verifique o status do Mongo
Para verificar o status de lc-mongodb.service, emita o comando.
Se o Mongo estiver em um estado ativo, seus resultados serão semelhantes a:
732smc:/# systemctl is-active lc-mongodb
active
732smc:/#
Se o Mongo não estiver em um estado ativo, seus resultados serão semelhantes a:
732smc:/# systemctl is-active lc-mongodb
inactive
732smc:/#
Etapa 2. Parar o serviço Mongo
Se o serviço lc-mongodb estiver em um estado, interrompa o serviço com o comando.
732smc:/# /bin/systemctl stop lc-mongodb.service
732smc:/# /bin/systemctl status lc-mongodb.service | grep Active
Active: inactive (dead) since Thu 2022-04-07 12:33:49 UTC; 1s ago7
Aguarde alguns instantes e certifique-se de que mongo permaneça em um estado parado. Use o comando conforme necessário para garantir que o serviço esteja em um estado.
Etapa 3. Coletar ID de Processo (PID)
Verifique se o arquivo de bloqueio ainda contém um PID. Execute o comando .
Esta saída mostra que o arquivo lock contém o PID do serviço mongo. Este arquivo só deverá conter dados se o serviço estiver em um estado ativo.
Note: Anote o PID se ele for devolvido, pois ele é usado na Etapa 4
732smc:/# cat /lancope/var/database/dbs/mdb/mongod.lock
14259
732smc:/#
Esta saída mostra que o arquivo de bloqueio não contém um PID. Este arquivo deve estar vazio se o processo não estiver em um estado ativo. Se não houver PID, vá para a Etapa 7.
732smc:/# cat /lancope/var/database/dbs/mdb/mongod.lock
732smc:/#
Etapa 4. Verificar o status do PID
Se o arquivo mongod.lock verificado na Etapa 3 contiver um PID, execute o comando (altere o [1]4259 com seu PID da Etapa 3) para verificar a existência do PID e, em seguida, elimine esse PID se ele for encontrado.
Note: A expressão de colchete não é necessária, mas resulta na exclusão do comando "grep" na saída.
732smc:/# ps faux | grep [1]4259
mongodb 14259 0.3 0.4 516180 71520 ? Sl 12:38 0:03 /lancope/mongodb/bin/mongod --fork --config /etc/mongodb/mongodb.conf
732smc:/# kill -9 14259
732smc:/#
Etapa 5. Limpar o conteúdo do arquivo de bloqueio
Limpe o conteúdo do arquivo de bloqueio com o comando. Verifique se o arquivo está vazio agora com o comando.
732smc:/# > /lancope/var/database/dbs/mdb/mongod.lock
732smc:/# cat /lancope/var/database/dbs/mdb/mongod.lock
732smc:/#
Etapa 6. Tente iniciar o MongoDB
Tente iniciar o serviço lc-mongodb com o comando. Quando o prompt for retornado, verifique o status do processo com o comando.
732smc:/# /bin/systemctl start lc-mongodb.service
732smc:/# /bin/systemctl status lc-mongodb.service | grep Active
Active: active (running) since Thu 2022-04-07 12:38:37 UTC; 27s ago
732smc:/#
Se o processo estiver em um estado ativo, verifique novamente em alguns minutos para garantir que ele permaneça em um estado ativo. Você não precisará reparar o banco de dados se ele permanecer em um estado de funcionamento. Se o processo não permanecer ativo, vá para a etapa 7 e inicie um processo de reparo.
Etapa 7. Iniciar o reparo
Execute o comando
732smc:/# sudo -u mongodb /lancope/mongodb/bin/mongod --dbpath /lancope/var/database/dbs/mdb/ --repair
732smc:/#
Etapa 8. Tente iniciar o MongoDB reparado
Execute o comando para iniciar o serviço. O processo deve permanecer em um estado ativo e pode ser verificado pelo comando.
732smc:/# /bin/systemctl start lc-mongodb.service
732smc:/# /bin/systemctl status lc-mongodb.service | grep Active
Active: active (running) since Thu 2022-04-07 12:38:37 UTC; 27s ago