Configurar o registro no diário para sistemas autogerenciados
Nesta página
O MongoDB usa o registro de write-ahead em umdiário no disco para garantir a durabilidade da operação de escrita .
O mecanismo de armazenamento WiredTiger não exige registro no diário para garantir um estado consistente após uma falha. O banco de dados será restaurado no último ponto de controle consistente durante a recuperação. No entanto, se o MongoDB for encerrado inesperadamente entre os checkpoints, o diário será necessário para recuperar as gravações que ocorreram após o último checkpoint.
Se mongod
parar inesperadamente, o programa poderá recuperar tudo o que foi gravado no registro. O MongoDB aplicará novamente as operações de gravação ao reiniciar e manter um estado consistente. Por padrão, a maior parte das gravações perdidas, ou seja, aquelas que não foram feitas no diário, são aquelas feitas nos últimos 100 milissegundos, mais o tempo necessário para realizar as gravações reais no diário. Consulte commitIntervalMs
para mais informações sobre o padrão.
Procedimentos
Obtenha reconhecimento de compromisso
Você pode obter a confirmação do compromisso com a preocupação de gravação e a opção j
. Para mais informações, consulte preocupação de gravação.
Monitorar o status do diário
O comando serverStatus
/métododb.serverStatus()
retorna wiredTiger.log
, que contém estatísticas no diário.
Recuperar dados após desligamento inesperado
Em uma reinicialização após uma falha, o MongoDB repete todos os arquivos de diário no diretório de diário antes que o servidor fique disponível. Se o MongoDB precisar reproduzir arquivos de diário, mongod
anota esses eventos na saída do log.
Não há razão para executar --repair
.
Alterar compressor de diário do WiredTiger
Com o mecanismo de armazenamento WiredTiger, MongoDB, por padrão, usa o compressor snappy
para o diário. Para especificar um algoritmo de compressão diferente ou nenhuma compressão para uma instância mongod
:
Dica
Se você encontrar um desligamento não limpo para um mongod
durante esse procedimento, deverá usar as configurações antigas do compressor para recuperar usando os arquivos de diário. Depois de recuperado, você pode tentar o procedimento novamente.
Utilize o seguinte procedimento para alterar o compressor de diário para uma instância do mongod
independente:
Atualize
storage.wiredTiger.engineConfig.journalCompressor
para o novo valor.Se você utilizar opções de linha de comando em vez de um arquivo de configuração, você deverá atualizar a opção de linha de comando do
--wiredTigerJournalCompressor
durante a reinicialização abaixo.Execute um desligamento limpo da instância do
mongod
. Por exemplo, conectemongosh
à instância e emitadb.shutdownServer()
:db.getSiblingDB('admin').shutdownServer() Após confirmar que o processo não está mais em execução, reinicie a instância do
mongod
:Se você estiver usando um arquivo de configuração:
mongod -f <path/to/myconfig.conf> Se você estiver utilizando opções de linha de comando em vez de um arquivo de configuração, atualize o
--wiredTigerJournalCompressor
para o novo valor.mongod --wiredTigerJournalCompressor <differentCompressor|none> ...
Use o seguinte procedimento para alterar o compressor de diário de um membro de um conjunto de réplicas:
Execute um desligamento limpo da instância do
mongod
. Por exemplo, conectemongosh
à instância e emitadb.shutdownServer()
:db.getSiblingDB('admin').shutdownServer() Atualize
storage.wiredTiger.engineConfig.journalCompressor
para o novo valor.Se você usar opções de linha de comando em vez de um arquivo de configuração, deverá atualizar as opções de linha de comando durante a reinicialização abaixo.
Reinicie a instância do
mongod
:Se você estiver usando um arquivo de configuração:
mongod -f <path/to/myconfig.conf> Se você estiver utilizando opções de linha de comando em vez de um arquivo de configuração, atualize o
--wiredTigerJournalCompressor
para o novo valor.mongod --wiredTigerJournalCompressor <differentCompressor|none> ...
Use o seguinte procedimento para alterar o compressor de diário de um membro de um conjunto de réplicas de shards ou conjunto de réplicas de servidor de configuração de configuração:
Execute um desligamento limpo da instância do
mongod
. Por exemplo, conectemongosh
à instância e emitadb.shutdownServer()
:db.getSiblingDB('admin').shutdownServer() Atualize
storage.wiredTiger.engineConfig.journalCompressor
para o novo valor.Se você usar opções de linha de comando em vez de um arquivo de configuração, deverá atualizar as opções de linha de comando durante a reinicialização abaixo.
Reinicie a instância do
mongod
:Se você estiver usando um arquivo de configuração:
mongod -f <path/to/myconfig.conf> Se você estiver utilizando opções de linha de comando em vez de um arquivo de configuração, atualize o
--wiredTigerJournalCompressor
para o novo valor.mongod --shardsvr --wiredTigerJournalCompressor <differentCompressor|none> --replSet ...