Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

replSetReconfig (comando de banco de dados)

replSetReconfig

The replSetReconfig administrative command modifies the configuration of an existing replica set. You can use this command to add and remove members, and to alter the options set on existing members. You must run this command on the admin database of the primary replica set member.

Dica

In mongosh, this command can also be run through the rs.reconfig() helper method.

Helper methods are convenient for mongosh users, but they may not return the same level of information as database commands. In cases where the convenience is not needed or the additional return fields are required, use the database command.

Esse comando está disponível em implantações hospedadas nos seguintes ambientes:

  • 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

Importante

Este comando não é aceito em clusters do MongoDB Atlas. Para obter informações sobre o suporte do Atlas a todos os comandos, consulte Comandos não suportados.

O comando tem a seguinte sintaxe:

db.adminCommand(
{
replSetReconfig: <new_config_document>,
force: <boolean>,
maxTimeMS: <int>
}
)

O comando usa o seguinte campo opcional:

Campo
Descrição

Padrão é false. Especifique true para forçar os membros do conjunto de réplica disponíveis a aceitar a nova configuração.

A reconfiguração forçada pode resultar em comportamento inesperado ou indesejado, incluindo a reversão de "majority" gravações confirmadas.

Optional. Specifies a cumulative time limit in milliseconds for processing the replSetReconfig. By default, replSetReconfig waits indefinitely for the replica configuration to propagate to a majority of replica set members. Setting maxTimeMS may result in the operation failing before it can apply the new configuration. See Reconfiguration Waits Until a Majority of Members Install the Replica Configuration for more information.

You may also run replSetReconfig with the shell's rs.reconfig() method.

You must explicitly set the global default write concern before attempting to reconfigure a replica set with a configuration that would change the implicit default write concern. To set the global default write concern, use the setDefaultRWConcern command.

The term field is set by the primary replica set member. The primary ignores the term field if set explicitly in the replSetReconfig operation.

replSetReconfig by default allows adding or removing no more than 1 voting member at a time. For example, a new configuration can make at most one of the following changes to the cluster membership:

  • Adicionando um novo membro do conjunto de réplica de votação.

  • Removendo um membro do conjunto de réplica de votação existente.

  • Modificando o votes para um membro do conjunto de réplica existente.

To add or remove multiple voting members, issue a series of replSetReconfig operations to add or remove one member at a time.

A emissão de uma reconfiguração forçada instala imediatamente a nova configuração, mesmo que ela adicione ou remova vários membros votantes. A reconfiguração forçada pode causar um comportamento inesperado, como a reversão das operações de gravação confirmadas pelo "majority".

replSetReconfig waits until a majority of voting replica set members install the new replica configuration before returning success. A voting member is any replica set member where members[n].votes is 1, including arbiters.

Os membros do conjunto de réplicas propagam sua configuração de réplica por meio de pulsações. Sempre que um membro descobre uma configuração com umversion e termsuperiores, ele instala a nova configuração. O processo de reconfiguração tem duas fases distintas de espera:

1) Aguarde que a configuração atual seja comprometida antes de instalar a nova configuração.

The "current" configuration refers to the replica configuration in use by the primary at the time replSetReconfig is issued.

Uma configuração é confirmada quando:

  • A maioria dos membros do conjunto de réplica de votação instalou a configuração atual e

  • Todas as gravações que foram "majority" confirmadas na configuração anterior também foram replicadas para uma maioria na configuração atual.

Normalmente, a configuração atual já foi instalada na maioria dos membros do conjunto de réplica de votação. No entanto, a maioria das gravações confirmadas na configuração anterior pode não ser confirmada na configuração atual. Delayed membros ou membros que são lagging behind os principais podem aumentar o tempo gasto nessa fase.

Se a operação tiver sido emitida com um limite de maxTimeMS e a operação exceder o limite enquanto espera, a operação retornará um erro e descartará a nova configuração. O limite é cumulativo e não é redefinido após prosseguir para a próxima fase.

2) Aguarde a maioria dos membros votantes na nova configuração instalar a nova configuração.

The "new" configuration refers to the replica configuration specified to replSetReconfig.

O primário instala e começa a usar a nova configuração de réplica antes de propagar a configuração para os membros restantes do conjunto de réplicas. A operação aguarda apenas que a maioria dos membros votantes instale a nova configuração e não requer a espera para que a nova configuração seja confirmada.

Se a operação foi emitida com um limite maxTimeMS e a operação exceder o limite durante a espera, a operação retornará um erro , mas continuará usando e propagando a nova configuração.

A emissão de uma reconfiguração forçada instala imediatamente a nova configuração, independentemente do status de compromisso da configuração anterior. A reconfiguração forçada pode causar um comportamento inesperado, como a reversão de "majority" operações de gravação confirmadas.

Para verificar o status de compromisso da configuração atual da réplica, emita replSetGetConfig com o parâmetro commitmentStatus no conjunto de réplicas principal.

A partir do MongoDB 5.0, um secundário recém-adicionado não conta como um membro votante e não pode ser eleito até que tenha atingido o estado SECONDARY.

When a new voting node is added to a replica set, replSetReconfig will internally add a newlyAdded field to the node's configuration. Nodes with the newlyAdded field do not count towards the current number of voting nodes. When initial sync completes and the node reaches SECONDARY state, the newlyAdded field is automatically removed.

Observação

  • As configurações que tentam adicionar um campo chamado newlyAdded apresentarão erros mesmo se executadas com { force: true }.

  • Se um nó existente tiver um campo newlyAdded, utilizar rs.reconfig() para alterar a configuração não removerá o campo newlyAdded. O campo newlyAdded será anexado à configuração fornecida pelo usuário.

  • replSetGetConfig removerá todos os campos newlyAdded de saída. Se quiser ver quaisquer campos newlyAdded, você pode fazer a query da collection local.system.replset diretamente.

Para executar o comando em sistemas que impõem controle de acesso, o usuário deve ter a ação de privilégio replSetConfigure no recurso de cluster. A role incorporada clusterManager , disponível no reconhecimento de data center admin , fornece o privilégio necessário para esse comando.

replSetReconfig obtains a special mutually exclusive lock to prevent more than one replSetReconfig operation from occurring at the same time.

Aviso

Evite reconfigurar conjuntos de réplicas que contenham membros de diferentes versões do MongoDB, pois as regras de validação podem diferir entre as versões do MongoDB.

A maioria dos membros do conjunto deve estar operacional para que as alterações se propaguem corretamente.

replSetReconfig can trigger the current primary to step down in some situations. Primary step-down triggers an election to select a new primary:

  • Quando o novo primário aumenta, ele incrementa o campo term para distinguir as alterações de configuração feitas no novo primário das alterações feitas no primário anterior.

  • Quando o primário é desativado, ele não fecha mais todas as conexões do cliente; no entanto, as gravações que estavam em andamento são mortos. Confira os detalhes em Comportamento.

O tempo médio antes de um cluster eleger um novo primário normalmente não deve exceder 12 segundos, assumindo replica configuration settingspadrão . Isso inclui o tempo necessário para marcar a primária como indisponível e convocar e concluir uma eleição. Você pode ajustar este período de tempo modificando a opção de configuração de replicação do settings.electionTimeoutMillis. Fatores como a latência da rede podem prolongar o tempo necessário para que as eleições de conjuntos de réplicas sejam concluídas, o que, por sua vez, afeta o tempo em que o cluster pode operar sem um primário. Esses fatores dependem da arquitetura específica de seus clusters.

Durante o processo de eleição, o cluster não pode aceitar operações de gravação até que eleja o novo primário.

A lógica de conexão do seu aplicativo deve incluir tolerância para failovers automáticos e as eleições subsequentes. Os drivers do MongoDB podem detectar a perda do primário e repetir automaticamente determinadas operações de gravação uma única vez, fornecendo tratamento adicional integrado de failovers e eleições automáticas:

Drivers compatíveis permitem gravações repetíveis por padrão

Para reduzir ainda mais o impacto potencial em um cluster de produção, reconfigure somente durante os períodos de manutenção programados.

Aviso

O MongoDB não sincroniza uma reconfiguração forçada de conjunto de réplicas entre os conjuntos de réplicas em um cluster. O uso de { force: true } pode levar a uma reversão das gravações comprometidas pela maioria e a um cluster fragmentado inconsistente. Tenha cuidado ao usar essa opção.

Using replSetReconfig to remove a replica set member does not automatically drop open outgoing connections from other replica set members to the removed member.

Por padrão, os membros do conjunto de réplicas aguardam 5 minutos antes de descartar conexões com o membro removido. Em conjuntos de réplicas fragmentadas, você pode modificar esse tempo limite usando o parâmetroShardingTaskExecutorPoolHostTimeoutMS server.

Para descartar imediatamente todas as conexões de saída do conjunto de réplicas para o nó removido, execute o comando administrativo dropConnections em cada nó restante no conjunto de réplicas:

db.adminCommand(
{
"dropConnections" : 1,
"hostAndPort" : [
"<hostname>:<port>"
]
}
)

Substitua <hostname> e <port> pelos do membro removido.

Aviso

A partir do MongDB,5.0 os nósDNS de horizonte divisão que são configurados apenas com um endereço IP falham na validação de inicialização e relatam um erro.disableSplitHorizonIPCheck Consulte.

Campos de Configuração do conjunto de réplicas , Configuração autogerenciada do conjunto de réplicas, rs.reconfig() e rs.conf().