Contents

Introduction

Prerequisites

Requirements

Componentes Utilizados

Revisar dados de log

Reparar o Banco de Dados se ele não for iniciado

Introduction

Este documento descreve como reparar o MongoDB no dispositivo Secure Network Analytics (anteriormente Stealthwatch) Manager após um desligamento não limpo.

Prerequisites

Requirements

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.

The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. 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 less 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. Verificar status do Mongo

Para verificar o status de lc-mongodb.service, emita o comando systemctl is-ative lc-mongodb.

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. Pare o serviço Mongo

Se o serviço lc-mongodb estiver em um estado ativo, interrompa o serviço com o comando /bin/systemctl stop lc-mongodb.service.

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 /bin/systemctl status lc-mongodb.service conforme necessário para garantir que o serviço esteja em um estado inativo.

Etapa 3. Coletar ID do Processo (PID)

Verifique se o arquivo de bloqueio ainda contém um PID. Emita o comando cat /lancope/var/database/dbs/mdb/mongod.lock.

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.

Observação: 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 status de PID

Se o arquivo mongod.lock marcado na Etapa 3 contiver um PID, execute o comando ps fuax comando | grep [1]4259 (altere o [1]4259 com seu PID da etapa 3) para verificar a existência do PID e, em seguida, elimine-o se for encontrado.

Observação: 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 conteúdo do arquivo de bloqueio

Limpe o conteúdo do arquivo de bloqueio com o comando > /lancope/var/database/dbs/mdb/mongod.lock. Verifique se o arquivo está vazio agora com o comando cat /lancope/var/database/dbs/mdb/mongo.lock.

732smc:/# > /lancope/var/database/dbs/mdb/mongod.lock

732smc:/# cat /lancope/var/database/dbs/mdb/mongod.lock

732smc:/#

Etapa 6. Tentativa de iniciar o MongoDB

Tente iniciar o serviço lc-mongodb com o comando /bin/systemctl start lc-mongodb.service. Quando seu prompt for retornado, verifique o status do processo com /bin/systemctl status lc-mongodb.service comando | grep Ative.

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.

Passo 7. Iniciar reparo

Execute o comando sudo -u mongodb /lancope/mongodb/bin/mongod —dbpath /lancope/var/database/dbs/mdb —repair

732smc:/# sudo -u mongodb /lancope/mongodb/bin/mongod --dbpath /lancope/var/database/dbs/mdb/ --repair

732smc:/#

Etapa 8. Tentativa de iniciar o MongoDB reparado

Execute o comando /bin/systemctl start lc-mongodb.service para iniciar o serviço.  O processo deve permanecer em um estado ativo e pode ser verificado com o comando /bin/systemctl status lc-mongodb.service.

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