Configurar mongod
processos autogerenciados
Nesta página
O MongoDB é executado como um programa padrão. Você pode iniciar o MongoDB a partir de uma linha de comando emitindo o comando mongod
e especificando opções. Para obter uma lista de opções, consulte a referência mongod
.
Os exemplos a seguir pressupõem que o diretório contendo o processo mongod
esteja nos caminhos do sistema. O processo do mongod
é o principal processo do banco de dados, que é executado em um servidor individual. O mongos
oferece uma interface MongoDB coerente equivalente a um mongod
da perspectiva de um cliente. O mongosh
binário fornece o shell administrativo.
Este documento discute o processo mongod
; entretanto, algumas partes deste documento podem ser aplicáveis a instâncias mongos
.
Iniciar mongod
Processos
Por padrão, o MongoDB escuta conexões de clientes na porta 27017
e armazena dados no diretório /data/db
.
No Windows, esse caminho está na unidade a partir da qual você inicia o MongoDB. Por exemplo, se você não especificar um --dbpath
, iniciar um servidor MongoDB na unidade do C:\
armazenará todos os arquivos de dados no C:\data\db
.
Para iniciar o MongoDB usando todos os padrões, emita o seguinte comando no shell do sistema:
mongod
Especifique um Diretório de Dados
Se desejar que mongod
armazene ficheiro de dados em um caminho diferente de /data/db
, você poderá especificar um dbPath
. O dbPath
deve existir antes de você iniciar mongod
. Caso não exista, crie o diretório e as permissões para que mongod
possa ler e gravar dados neste caminho. Para obter mais informações sobre permissões, consulte a documentação de operações de segurança.
Para especificar um dbPath
para mongod
para utilizar como um diretório de dados, utilize a opção --dbpath
. A seguinte invocação iniciará uma instância do mongod
e armazenará os dados no caminho do /srv/mongodb
mongod --dbpath /srv/mongodb/
Observação
mongod
inclui um mecanismo de captura de dados de diagnóstico em tempo integral para ajudar os engenheiros do MongoDB a solucionar problemas nos sistemas. Se essa thread falhar, ela encerra o processo de origem. Para evitar as falhas mais comuns, confirme se o usuário que está executando o processo tem permissões para criar o diretório FTDC diagnostic.data
. Para mongod
, o diretório está dentro de storage.dbPath
. Para mongos
, ele é paralelo a systemLog.path
.
Especificação de uma Porta TCP
Somente um único processo pode escutar conexões em uma interface de rede por vez. Se você executar vários processos do mongod
em um único computador ou tiver outros processos que precisem usar essa porta, será necessário atribuir a cada um deles uma porta diferente para escutar as conexões do cliente.
Para especificar uma porta para mongod
, utilize a opção --port
na linha de comando. O comando a seguir inicia a escuta mongod
na porta 12345
:
mongod --port 12345
Use o número de porta padrão, quando possível, para evitar confusão.
Iniciar mongod
como um Daemon
Para executar um processo mongod
como um daemon (ou seja, fork
) e gravar sua saída em um arquivo de registro, use as opções --fork
e --logpath
. É necessário criar o diretório de registro; no entanto, mongod
cria o arquivo de log se ele não existir.
O seguinte comando inicia o mongod
como um daemon e registra a saída de log no /var/log/mongodb/mongod.log
.
mongod --fork --logpath /var/log/mongodb/mongod.log
Opções Adicionais de Configuração
Para uma visão geral de configurações e implantações comuns para casos de uso comuns, consulte Configuração de banco de dados em tempo de execução para implantações autogerenciadas.
mongod
Pare Processos
Em um desligamento limpo, um mongod
completa todas as operações pendentes, libera todos os dados para os arquivos de dados e fecha todos os arquivos de dados. Outros encerramentos são incríveis e podem comprometer a validade dos arquivos de dados.
Para garantir um desligamento limpo, sempre desligue as instâncias mongod
usando um dos seguintes métodos:
Usar shutdownServer()
Desligue o mongod
do mongosh
usando o método db.shutdownServer()
da seguinte forma:
use admin db.shutdownServer()
Chamar o mesmo método a partir de um script de inicialização obtém o mesmo resultado.
Para sistemas com authorization
ativado, os usuários só podem emitir db.shutdownServer()
quando autenticados no banco de dados admin
ou por meio da interface localhost em sistemas sem autenticação ativada.
Usar --shutdown
Compatível somente com Linux. Na linha de comando, desligue o mongod
utilizando a opção --shutdown
:
mongod --shutdown
Usar CTRL-C
Ao executar a instância mongod
no modo interativo (ou seja, sem --fork
), emita Control-C
para executar um desligamento limpo.
Usar kill
Compatível apenas com Linux e macOS. Na linha de comando, desligue uma instância mongod
específica usando um dos seguintes comandos:
kill <mongod process ID> kill -2 <mongod process ID>
SIGTERM
e conjuntos de réplicas
Se um conjunto de réplicas primary receber um SIGTERM
, o primary tentará reduzir antes de encerrar.
Se a redução for bem-sucedida, a instância não votará na seguinte eleição do novo primary e continuará o encerramento.
Se o rebaixamento falhar, a instância continuará seu desligamento.
SIGKILL
Aviso
Nunca use kill -9
(ou seja, SIGKILL
) para encerrar uma instância mongod.
mongod
Solucionar problemas de Processos
Gerar um backtrace
Para instâncias do MongoDB em execução no Linux:
Quando os processos
mongod
emongos
recebem um sinalSIGUSR2
, os detalhes do backtrace são adicionados aos registros de cada thread do processo.Os detalhes de backtrace mostram as chamadas de função para o processo, que podem ser usadas para diagnósticos e fornecidas ao Suporte do MongoDB, se necessário.
A funcionalidade de backtrace está disponível para estas arquiteturas:
x86_64
arm64
(a partir do MongoDB 5.0.10 e 6.0)
Para emitir um sinal SIGUSR2
para um processo mongod
em execução, use o seguinte comando:
kill -SIGUSR2 <mongod process ID>
Os dados de backtrace resultantes são gravados no arquivo de logmongod
conforme configurado com --logpath
.
Interrupção de um Conjunto de Réplicas
Procedimento
Se o mongod
for o principal em um conjunto de réplicas, o processo de desligamento dessa instância mongod
terá as seguintes etapas:
Verifique se os secundários estão atualizados.
Se nenhum secundário estiver dentro de 10 segundos do primário,
mongod
retornará uma mensagem de que não será desligado. Você pode passar o comandoshutdown
um argumentotimeoutSecs
para aguardar que um secundário se atualize.Se houver um secundário dentro de 10 segundos do primary, o primary reduzirá e aguardará que o secundário se atualize.
Após 60 segundos ou quando o secundário se atualizar, o primary será encerrado.
Forçar encerramento do conjunto de réplicas
Se não houver um secundário atualizado e você quiser que o primário seja encerrado, emita o comando shutdown
com o argumento force
, como na seguinte operação mongosh
:
db.adminCommand({shutdown : 1, force : true})
Para continuar verificando os secundários por um número especificado de segundos se nenhum estiver imediatamente atualizado, emitashutdown
com o argumento timeoutSecs
. O MongoDB continuará verificando os secundários pelo número de segundos especificado se nenhum estiver imediatamente atualizado. Se algum dos secundários se atualizar dentro do tempo estipulado, o primário será encerrado. Se nenhum secundário se atualizar, ele não será encerrado.
O comando a seguir emite shutdown
com timeoutSecs
definido como 5
:
db.adminCommand({shutdown : 1, timeoutSecs : 5})
Como alternativa, você pode usar o argumento timeoutSecs
com o método db.shutdownServer()
:
db.shutdownServer({timeoutSecs : 5})