Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

replSetResizeOplog

Nesta página

  • Definição
  • Sintaxe
  • Campos de comando
  • Comportamento
  • Exemplos
replSetResizeOplog

replSetResizeOplog também suporta a especificação do número mínimo de horas para preservar uma entrada de oplog.

Alterado na versão 5.0: Para definir o tamanho replSetOplog em mongosh, use o construtor Double() .

replSetResizeOplog permite a você redimensionar o oplog ou seu período de retenção mínimo dinamicamente sem reiniciar o processo do mongod .

Você deve executar este comando no banco de dados admin.

O comando tem o seguinte formato:

db.adminCommand(
{
replSetResizeOplog: <int>,
size: <double>,
minRetentionHours: <double>
}
)

O comando utiliza os seguintes campos:

Campo
Tipo
Descrição
replSetResizeOplog
int
Defina como 1.
size
em dobro

O tamanho máximo do oplog em megabytes.

  • O tamanho mínimo que você pode especificar é 990 megabytes.

  • O tamanho máximo que você pode especificar é 1 petabyte.

  • Lance explicitamente size como um duplo em mongosh com Double(). Consulte Alterar o tamanho máximo do registro operacional.

minRetentionHours
em dobro

Opcional. O número mínimo de horas para preservar uma entrada de oplog, em que os valores decimais representam as frações de uma hora. Por exemplo, um valor de 1.5 representa uma hora e trinta minutos.

O valor deve ser maior ou igual a 0. Um valor de 0 indica que o mongod deve truncar o oplog começando com as entradas mais antigas para manter o tamanho máximo configurado do oplog.

Um mongod configurado com minRetentionHours somente remove uma entrada de oplog se:

  • O oplog atingiu o tamanho máximo configurado, e

  • A entrada do oplog é mais antiga que o número configurado de horas com base no relógio do sistema host.

Para verificar o período mínimo de retenção de oplog configurado no momento, consulte oplogTruncation.oplogMinRetentionHours na saída do comando serverStatus.

Dica

Veja também:

Você só pode usar replSetResizeOplog em instâncias do mongod em execução com o mecanismo de armazenamento Wired Tiger.

Consulte o tutorial Alterar o tamanho do oplog para obter um procedimento sobre como usar o comando replSetResizeOplog para redimensionar o oplog.

O oplog pode ultrapassar seu limite de tamanho configurado para evitar a exclusão do majority commit point.

A partir do MongoDB 4.0, o MongoDB proíbe o descarte da collection local.oplog.rs. Para obter mais informações sobre essa restrição, consulte Comportamento da collection Oplog.

replSetResizeOplog substitui o tamanho máximo do oplog ou o período mínimo de retenção do oplog definido na inicialização por:

O novo tamanho do oplog persiste após a reinicialização do servidor, a menos que você use:

Importante

Reduzir o tamanho máximo do oplog resulta no truncamento das entradas de oplog mais antigas até que o oplog atinja o novo tamanho configurado.

Da mesma forma, reduzir o período mínimo de retenção do oplog resultará no truncamento das entradas do oplog mais antigas que o período especificado se o oplog tiver excedido o tamanho máximo configurado.

O truncamento do oplog devido à redução do tamanho do oplog ou do período de retenção pode resultar em comportamento inesperado dos clientes que ainda estão lendo essas entradas do oplog, incluindo:

Um mongod tem o seguinte comportamento quando configurado com um período mínimo de retenção de oplog:

  • O oplog pode crescer sem restrições, de modo a reter as entradas do oplog pelo número de horas configurado. Isto pode resultar na redução ou esgotamento do espaço em disco do sistema devido a uma combinação de alto volume escrita e grande período de retenção.

  • Se o oplog crescer além de seu tamanho máximo, o mongod poderá continuar a manter esse espaço em disco, mesmo que o oplog retorne ao seu tamanho máximo ou seja configurado para um tamanho máximo menor. Consulte reduzir o tamanho do oplog não retorna imediatamente espaço em disco.

  • O mongod compara o relógio de parede do sistema com um relógio de parede de criação de entradas de oplog ao impor a retenção de entradas de oplog. O desvio do relógio entre os componentes do cluster pode resultar em um comportamento inesperado de retenção de registros. Consulte Sincronização do relógio para obter mais informações sobre a sincronização do relógio entre os membros do cluster.

Alterar o tamanho do oplog ou o período mínimo de retenção do oplog de um determinado membro do conjunto de réplicas com replSetResizeOplog não altera o tamanho do oplog de nenhum outro membro do conjunto de réplicas. Execute replSetResizeOplog em cada membro do conjunto de réplicas no seu cluster para alterar o tamanho do oplog ou o período mínimo de retenção de todos os membros.

Reduzir o tamanho do oplog não recupera imediatamente esse espaço em disco. Isso inclui a redução do tamanho do oplog devido à truncamento de eventos de oplog anteriores ao período mínimo de retenção de oplog.

Para liberar imediatamente o espaço em disco não utilizado após reduzir o tamanho do oplog, execute compact na collection do oplog.rs no banco de dados local durante um período de manutenção. compact bloqueia todas as operações no banco de dados em que ele é executado. A execução de compact no oplog.rs impede a sincronização de oplogs. Para ver um procedimento sobre o redimensionamento do oplog e a compactação do oplog.rs, consulte Alterar o tamanho do oplog.

Alterado na versão 4.2.2.

  • Para MongoDB 4.2.2 e posterior, replSetResizeOplog pega uma trava exclusiva (W) no oplog e bloqueia outras operações na collection até que ela termine.

  • Para MongoDB 4.2.1 e versões anteriores, replSetResizeOplog usa uma trava global exclusiva (W) e bloqueia todas as outras operações até que seja concluída.

Para obter mais informações sobre bloqueios no MongoDB, consulte as Perguntas frequentes: simultaneidade.

Utilize o método db.collection.stats() mongosh para exibir o tamanho máximo do oplog atual, maxSize, em megabytes. Por exemplo:

db.getSiblingDB("local").oplog.rs.stats(1024*1024).maxSize

O comando acima retorna o tamanho do oplog deste membro em megabytes:

990

O seguinte comando utiliza replSetResizeOplog para alterar o tamanho do oplog deste membro para 16384 megabytes:

db.adminCommand({ "replSetResizeOplog": 1, size: Double(16384)})

Para verificar o novo tamanho do oplog, execute novamente o método db.collection.stats():

db.getSiblingDB("local").oplog.rs.stats(1024*1024).maxSize

O comando acima retorna:

"maxSize": NumberLong("16834")

Aviso

A redução do tamanho do oplog em um nó remove os dados dele. Isso pode fazer com que os membros da réplica sincronizados com esse nó fiquem obsoletos. Para sincronizar esses membros novamente, consulte Sincronizar novamente um membro de um conjunto de réplicas.

  1. Conecte mongosh ao membro do conjunto de réplicas mongod .

  2. Opcional. Utilize o comando db.serverStatus() para verificar o valor de retenção do oplog mínimo atual como oplogTruncation.oplogMinRetentionHours:

    db.getSiblingDB("admin").serverStatus().oplogTruncation.oplogMinRetentionHours

    O comando retorna o período mínimo de retenção do oplog configurado atualmente para o mongod. Por exemplo:

    1.5

    Se o mongod não tiver um período mínimo de retenção do oplog, a operação retornará um resultado vazio.

  3. Use o comando replSetResizeOplog para modificar o período mínimo de retenção do oplog configurado. Por exemplo, o seguinte define o período mínimo de retenção do oplog como 2 horas:

    db.adminCommand({
    "replSetResizeOplog" : 1,
    "minRetentionHours" : 2
    })
← replSetReconfig