Página inicial do Docs → Desenvolver aplicações → Manual do MongoDB
replSetResizeOplog
Definição
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
emmongosh
, use o construtorDouble()
.replSetResizeOplog
permite a você redimensionar o oplog ou seu período de retenção mínimo dinamicamente sem reiniciar o processo domongod
.Você deve executar este comando no banco de dados
admin
.
Sintaxe
O comando tem o seguinte formato:
db.adminCommand( { replSetResizeOplog: <int>, size: <double>, minRetentionHours: <double> } )
Campos de comando
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.
|
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 O valor deve ser maior ou igual a Um
Para verificar o período mínimo de retenção de oplog configurado no momento, consulte |
Dica
Comportamento
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:
storage.oplogMinRetentionHours
/--oplogMinRetentionHours
respectivamente.
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:
Fluxos de alteração abertos podem ser invalidados
Os secundários que não replicaram essas entradas de oplog podem exigir ressincronização.
Backups usando
mongodump
com--oplog
contra o membro não podem capturar entradas antes do truncamento.
Período mínimo de retenção de Oplog
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.
replSetResizeOplog
Não replica para outros membros
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 retorna imediatamente o espaço em disco
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.
Bloqueio de recursos
Alterado na versão 4.2.2.
Para MongoDB 4.2.2 e posterior,
replSetResizeOplog
pega uma trava exclusiva (W) nooplog
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.
Exemplos
Alterar o tamanho máximo do oplog
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.
Alterar o período mínimo de retenção do oplog
Opcional. Utilize o comando
db.serverStatus()
para verificar o valor de retenção do oplog mínimo atual comooplogTruncation.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.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 como2
horas:db.adminCommand({ "replSetResizeOplog" : 1, "minRetentionHours" : 2 })