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.
Observação
Você não pode especificar a opção --nojournal
ou storage.journal.enabled: false
para membros do conjunto de réplicas que usam o mecanismo de armazenamento WiredTiger.
Com o registro no registro no diário ativado, se mongod
parar inesperadamente, o programa poderá recuperar tudo o que foi gravado no diário. O MongoDB reaplicará as operações de gravação na reinicialização e manterá um estado consistente. Por padrão, a maior extensão de gravações perdidas, ou seja, aquelas não feitas para o diário, são aquelas feitas nos últimos 100 milissegundos, mais o tempo que leva para realizar as gravações reais do diário . Consulte commitIntervalMs
para mais informações sobre o padrão.
Procedimentos
Desativar o registro no diário
Aviso
Não desative o registro no registro no diário nos sistemas de produção.
Você não pode especificar a opção
--nojournal
oustorage.journal.enabled: false
para membros do conjunto de réplicas que usam o mecanismo de armazenamento WiredTiger.
Para desabilitar o registro no registro no diário para um sistema autônomo , inicie o mongod
com a opção de linha de comando --nojournal
.
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 a configuração
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ê terá que 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 a opção
--wiredTigerJournalCompressor
.mongod --wiredTigerJournalCompressor <differentCompressor|none> ...
Use o seguinte procedimento para alterar o compressor de diário de um membro de um conjunto de réplicas:
Observação
O procedimento a seguir envolve reiniciar o membro da réplica como autônomo sem o diário.
Execute um desligamento limpo da instância do
mongod
. Por exemplo, conectemongosh
à instância e emitadb.shutdownServer()
:db.getSiblingDB('admin').shutdownServer() Atualize o arquivo de configuração para se preparar para reiniciar como um autônomo:
Defina
storage.journal.enabled
comofalse
.Comente as configurações de replicação do seu sistema.
Defina o parâmetro
disableLogicalSessionCacheRefresh
comotrue
na seçãosetParameter
.
Por exemplo:
storage: journal: enabled: false #replication: # replSetName: replA setParameter: disableLogicalSessionCacheRefresh: true Se você usar opções de linha de comando em vez de um arquivo de configuração, terá que atualizar a opção de linha de comando durante a reinicializaçã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 usando opções de linha de comando em vez de um arquivo de configuração,
Inclua a opção
--nojournal
Remova todas as opções de linha de comando de replicação (como
--replSet
):Configure o parâmetro
disableLogicalSessionCacheRefresh
paratrue
na opção--setParameter
.mongod --nojournal --setParameter disableLogicalSessionCacheRefresh=true ...
Execute um desligamento limpo da instância do
mongod
:db.getSiblingDB('admin').shutdownServer() Confirme se o processo não está mais em execução.
Atualize o arquivo de configuração para preparar a reinicialização como um membro do conjunto de réplicas com o novo compressor de diário:
Remova a configuração
storage.journal.enabled
.Cancele o comentário das configurações de replicação do seu sistema.
Remova o parâmetro
disableLogicalSessionCacheRefresh
.Remova a configuração
storage.wiredTiger.engineConfig.journalCompressor
para usar o compressor de diário padrão ou especifique um novo valor.
Por exemplo:
storage: wiredTiger: engineConfig: journalCompressor: <newValue> replication: replSetName: replA Se você usar opções de linha de comando em vez de um arquivo de configuração, terá que atualizar as opções de linha de comando durante a reinicialização abaixo.
Reinicie a instância do
mongod
como um membro do conjunto de réplicas:Se você estiver usando um arquivo de configuração:
mongod -f <path/to/myconfig.conf> Se você estiver usando opções de linha de comando em vez de um arquivo de configuração:
Remova a opção
--nojournal
.Remova a opção de linha de comando
--wiredTigerJournalCompressor
para usar o compressor de diário padrão ou atualizar para um novo valor.Inclua suas opções de linha de comando de replicação , bem como quaisquer opções adicionais para seu membro do conjunto de réplicas.
Remova o parâmetro
disableLogicalSessionCacheRefresh
.
mongod --wiredTigerJournalCompressor <differentCompressor|none> --replSet ...
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:
Observação
O procedimento a seguir envolve reiniciar o membro da réplica como autônomo sem o diário.
Execute um desligamento limpo da instância do
mongod
. Por exemplo, conectemongosh
à instância e emitadb.shutdownServer()
:db.getSiblingDB('admin').shutdownServer() Atualize o arquivo de configuração para se preparar para reiniciar como um autônomo:
Defina
storage.journal.enabled
comofalse
.Configure o parâmetro
skipShardingConfigurationChecks
para verdadeiro.Defina o parâmetro
disableLogicalSessionCacheRefresh
comotrue
na seçãosetParameter
.Comente as configurações de replicação do seu sistema.
Comente a configuração
sharding.clusterRole
.Defina
net.port
para a porta atual do membro, se não estiver explicitamente definido.
Por exemplo:
storage: journal: enabled: false setParameter: skipShardingConfigurationChecks: true disableLogicalSessionCacheRefresh: true #replication: # replSetName: shardA #sharding: # clusterRole: shardsvr net: port: 27218 Se você usar opções de linha de comando em vez de um arquivo de configuração, terá que atualizar a opção de linha de comando durante a reinicializaçã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 usando opções de linha de comando em vez de um arquivo de configuração:
Inclua a opção
--nojournal
.Configure o parâmetro
skipShardingConfigurationChecks
para verdadeiro.Configure o parâmetro
disableLogicalSessionCacheRefresh
paratrue
na opção--setParameter
.Remova todas as opções de linha de comando de replicação (como
--replSet
).Remova a opção
--shardsvr
/--configsvr
.Inclua explicitamente
--port
definido para a porta atual da instância.
mongod --nojournal --setParameter skipShardingConfigurationChecks=true --setParameter disableLogicalSessionCacheRefresh=true --port <samePort> ...
Execute um desligamento limpo da instância do
mongod
:db.getSiblingDB('admin').shutdownServer() Confirme se o processo não está mais em execução.
Atualize o arquivo de configuração para preparar-se para reiniciar com o novo compressor de diário:
Remova a configuração
storage.journal.enabled
.Remova a configuração do parâmetro
skipShardingConfigurationChecks
.Remova a configuração do parâmetro
disableLogicalSessionCacheRefresh
.Cancele o comentário das configurações de replicação do seu sistema.
Descomente a configuração
sharding.clusterRole
.Remova a configuração
storage.wiredTiger.engineConfig.journalCompressor
para usar o compressor de diário padrão ou especifique um novo valor.
Por exemplo:
storage: wiredTiger: engineConfig: journalCompressor: <newValue> replication: replSetName: shardA sharding: clusterRole: shardsvr net: port: 27218 Se você usar opções de linha de comando em vez de um arquivo de configuração, terá que atualizar as opções de linha de comando durante a reinicialização abaixo.
Reinicie a instância do
mongod
como um membro do conjunto de réplicas:Se você estiver usando um arquivo de configuração:
mongod -f <path/to/myconfig.conf> Se você estiver usando opções de linha de comando em vez de um arquivo de configuração:
Remova a opção
--nojournal
.Remova a configuração do parâmetro
skipShardingConfigurationChecks
.Remova o parâmetro
disableLogicalSessionCacheRefresh
.Remova a opção de linha de comando
--wiredTigerJournalCompressor
para usar o compressor de diário padrão ou atualizar para um novo valor.Inclua a opção
--shardsvr
/--configsvr
.Inclua suas opções de linha de comando de replicação , bem como quaisquer opções adicionais para seu membro do conjunto de réplicas.
mongod --shardsvr --wiredTigerJournalCompressor <differentCompressor|none> --replSet ...