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

Configurar o registro no diário para sistemas autogerenciados

Nesta página

  • Procedimentos

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 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 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.

Aviso

Não desative o registro no diário em sistemas de produçã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.

Para desabilitar o registro no diário para um sistema autônomo, inicie o mongod com a opção de linha de comando do --nojournal .

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.

O comando serverStatus /métododb.serverStatus() retorna wiredTiger.log, que contém estatísticas no diário.

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, mongodanota esses eventos na saída do log.

Não há razão para executar --repair.

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:

  1. 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.

  2. Execute um desligamento limpo da instância do mongod . Por exemplo, conecte mongosh à instância e emita db.shutdownServer():

    db.getSiblingDB('admin').shutdownServer()
  3. 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.

  1. Execute um desligamento limpo da instância do mongod . Por exemplo, conecte mongosh à instância e emita db.shutdownServer():

    db.getSiblingDB('admin').shutdownServer()
  2. Atualize o arquivo de configuração para se preparar para reiniciar como um autônomo:

    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.

  3. 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,

  4. Execute um desligamento limpo da instância do mongod :

    db.getSiblingDB('admin').shutdownServer()

    Confirme se o processo não está mais em execução.

  5. 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:

    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.

  6. 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:

      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 servidores de configuração:

Observação

O procedimento a seguir envolve reiniciar o membro da réplica como autônomo sem o diário.

  1. Execute um desligamento limpo da instância do mongod . Por exemplo, conecte mongosh à instância e emita db.shutdownServer():

    db.getSiblingDB('admin').shutdownServer()
  2. Atualize o arquivo de configuração para se preparar para reiniciar como um autônomo:

    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.

  3. 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:

      mongod --nojournal --setParameter skipShardingConfigurationChecks=true --setParameter disableLogicalSessionCacheRefresh=true --port <samePort> ...
  4. Execute um desligamento limpo da instância do mongod :

    db.getSiblingDB('admin').shutdownServer()

    Confirme se o processo não está mais em execução.

  5. Atualize o arquivo de configuração para preparar-se para reiniciar com o novo compressor de diário:

    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.

  6. 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:

      mongod --shardsvr --wiredTigerJournalCompressor <differentCompressor|none> --replSet ...

Voltar

In-memory

Nesta página