Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

Configurar mongod processos autogerenciados

Nesta página

  • Iniciar processos mongod
  • Pare os mongod Processos
  • Solucionar problemas de Processos mongod
  • Interrupção de um Conjunto de Réplicas

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.

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

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.

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.

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

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.

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:

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.

Compatível somente com Linux. Na linha de comando, desligue o mongod utilizando a opção --shutdown:

mongod --shutdown

Ao executar a instância mongod no modo interativo (ou seja, sem --fork), emita Control-C para executar um desligamento limpo.

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>

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.

Aviso

Nunca use kill -9 (ou seja, SIGKILL) para encerrar uma instância mongod.

Para instâncias do MongoDB em execução no Linux:

  • Quando os processos mongod e mongos recebem um sinal SIGUSR2, 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.

Se o mongod for o principal em um conjunto de réplicas, o processo de desligamento dessa instância mongod terá as seguintes etapas:

  1. Verifique se os secundários estão atualizados.

  2. 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 comando shutdown um argumento timeoutSecs para aguardar que um secundário se atualize.

  3. Se houver um secundário dentro de 10 segundos do primary, o primary reduzirá e aguardará que o secundário se atualize.

  4. Após 60 segundos ou quando o secundário se atualizar, o primary será encerrado.

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})

Voltar

Atualize para a versão de patch mais recente