replSetResizeOplog
Definição
replSetResizeOplog
replSetResizeOplog
também oferece suporte à 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
.
Compatibilidade
Esse comando está disponível em implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
Importante
Este comando não é suportado em clusters M10+ . Para obter mais informações, consulte Comandos não suportados.
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
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 |
---|---|---|
| int | Defina como |
| double | O tamanho máximo do oplog em megabytes.
|
| double | 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
Veja também:
Comportamento
Você pode usar o replSetResizeOplog
em instâncias do mongod
executando com o mecanismo de armazenamento Wired Tiger ou o mecanismo de armazenamento in-memory.
Consulte o tutorial Alterar o tamanho do oplog dos membros do conjunto de réplicas autogerenciadas 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
.
Você não pode descartar a coleção local.oplog.rs
. Para obter mais informações sobre essa restrição, consulte Comportamento da collectionoplog .
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 resulta na truncagem 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 ultrapassar 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 o 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 ao 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 local
oplog.rs
banco de dados de dados durante um período de manutenção. compact
bloqueia todas as operações no banco de dados de dados em que ele é executado. A execução de compact
no oplog.rs
impede a sincronização de oplog . Para ver um procedimento sobre o redimensionamento do oplog e a compactação do oplog.rs
, consulte Alterar o tamanho do oplog dos membros do conjunto de réplicas autogerenciadas.
Bloqueio de recursos
replSetResizeOplog
pega uma bloqueio exclusiva (W) no oplog
e bloqueia outras operações na collection até que ela termine.
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 autogerenciado.
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 })