Você pode acessar a configuração de um conjunto de réplicas utilizando o método rs.conf() ou o comando replSetGetConfig.
Para modificar a configuração de um conjunto de réplica, utilize o método rs.reconfig(), passando um documento de configuração para o método.
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.
Exemplo de documento de configuração do conjunto de réplica
O documento a seguir fornece uma representação de um documento de configuração de conjunto de réplica. A configuração do seu conjunto de réplicas pode incluir somente um subconjunto dessas configurações:
{ _id: <string>, version: <int>, term: <int>, protocolVersion: <number>, writeConcernMajorityJournalDefault: <boolean>, configsvr: <boolean>, members: [ { _id: <int>, host: <string>, arbiterOnly: <boolean>, buildIndexes: <boolean>, hidden: <boolean>, priority: <number>, tags: <document>, secondaryDelaySecs: <int>, votes: <number> }, ... ], settings: { chainingAllowed : <boolean>, heartbeatIntervalMillis : <int>, heartbeatTimeoutSecs: <int>, electionTimeoutMillis : <int>, catchUpTimeoutMillis : <int>, getLastErrorModes : <document>, getLastErrorDefaults : <document>, replicaSetId: <ObjectId> } }
Campos de configuração do conjunto de réplicas
_idTipo: string
O nome do conjunto de réplicas.
_iddeve ser idêntico aoreplication.replSetNameou ao valor de--replSetespecificado paramongodna linha de comando.Dica
replSetNameou--replSetpara informações sobre como configurar o nome do conjunto de réplicas.
versionTipo: int
Um número incremental usado para distinguir as revisões do documento de configuração do conjunto de réplicas das iterações anteriores da configuração.
Replica set members use
termandversionto achieve consensus on the "newest" replica configuration. When members compare replica configuration documents, the configuration document with a largertermis considered the "newest". Iftermis the same or absent, the configuration document with the largerversionis considered "newest".
termTipo: int
Disponível apenas com versão de compatibilidade do recurso (FCV) "4.4" ou posterior.
An incrementing number used to distinguish revisions of the replica set configuration document from previous iterations of the configuration. The
termof a configuration document matches the term of the replica set primary which performed the reconfiguration. The primary increments its term each time it steps up after winning an election. The primary ignores thetermfield if set explicitly in thereplSetReconfigoperation.Issuing a force reconfiguration removes the
termfield. When the primary next issuesreplSetReconfigwithout force, it sets thetermto its own term.Replica set members use
termandversionto achieve consensus on the "newest" replica configuration. When members compare replica configuration documents, the configuration document with a largertermis considered the "newest". Iftermis the same or absent, the configuration document with the largerversionis considered "newest".
configsvrTipo: booleano
Padrão: false
Indica se o conjunto de réplica é utilizado para servidores de configuração de um cluster fragmentado. Configure para
truese o conjunto de réplica for para servidores de configuração do cluster fragmentado.
protocolVersionTipo: número
Padrão: 1
O MongoDB oferece suporte apenas a
protocolVersion: 1e não oferece mais suporte aprotocolVersion: 0.
writeConcernMajorityJournalDefaultTipo: booleano
Padrão: true
Determina o comportamento de
{ w: "majority" }write concern se a write concern não especificar explicitamente a opção de diário j.A tabela a seguir lista os valores
writeConcernMajorityJournalDefaulte o comportamento{ w: "majority" }associado:Valor{ w: "majority" }Comportamentotrue
O MongoDB reconhece a operação de gravação após a maioria dos membros votantes ter escrito no diário em disco.
IMPORTANTE: Todos os membros votantes do conjunto de réplicas devem ser executados com registro em diário
writeConcernMajorityJournalDefaultquandotrueestiver.If any voting member of a replica set uses the in-memory storage engine, you must set
writeConcernMajorityJournalDefaulttofalse.If any voting member of a replica set uses the in-memory storage engine and
writeConcernMajorityJournalDefaultistrue,"majority"write operations may fail. These include operations that inherently use"majority"write concern, such as thereplSetStepDowncommand, or variousmongoshmethods that by default use"majority"write concern, such as user management methods and role management methods.Starting in version 4.2 (and 4.0.13 and 3.6.14 ), if a replica set member uses the in-memory storage engine (voting or non-voting) but the replica set has
writeConcernMajorityJournalDefaultset to true, the replica set member logs a startup warning.false
O MongoDB reconhece a operação de gravação depois que a maioria dos membros votantes aplicou a operação na memória.
AVISO:If any voting member of a replica set uses the in-memory storage engine, you must set
writeConcernMajorityJournalDefaulttofalse.Starting in version 4.2 (and 4.0.13 and 3.6.14 ), if a replica set member uses the in-memory storage engine (voting or non-voting) but the replica set has
writeConcernMajorityJournalDefaultset to true, the replica set member logs a startup warning.You cannot run transactions on a sharded cluster that has a shard with
writeConcernMajorityJournalDefaultset tofalse(such as a shard with a voting member that uses the in-memory storage engine).
members
membersTipo: array
An array of member configuration documents, one for each member of the replica set. The
membersarray is a zero-indexed array.Cada documento de configuração específico do membro pode conter os seguintes campos:
members[n]._idTipo: inteiro
Um identificador inteiro para o membro no conjunto de réplica, único entre todos os membros.
A partir do MongoDB 5.0, os valores podem ser qualquer valor inteiro maior ou igual a
0. Anteriormente, esse valor era limitado a um inteiro entre0e255inclusive.Each replica set member must have a unique
_id. Avoid re-using_idvalues even if nomembers[n]entry is using that_idin the current configuration.Once set, you cannot change the
_idof a member.Observação
When updating the replica configuration object, access the replica set members in the
membersarray with the array index. The array index begins with0. Do not confuse this index value with the value of themembers[n]._idfield in each document in themembersarray.
members[n].hostTipo: string
O nome do host e, se especificado, o número da porta do membro configurado.
O nome do host deve ser resolvido para cada host no conjunto de réplicas.
Aviso
members[n].hostcannot hold a value that resolves tolocalhostor the local interface unless all members of the set are on hosts that resolve tolocalhost.
members[n].arbiterOnlyOpcional.
Tipo: booleano
Padrão: false
Um booleano que identifica um árbitro. Um valor de
trueindica que o membro é um árbitro.When using the
rs.addArb()method to add an arbiter, the method automatically setsmembers[n].arbiterOnlytotruefor the added member.
members[n].buildIndexesOpcional.
Tipo: booleano
Padrão: true
A boolean that indicates whether the
mongodbuilds indexes on this member. You can only set this value when adding a member to a replica set. You cannot changemembers[n].buildIndexesfield after the member has been added to the set. To add a member, seers.add()andrs.reconfig().Não configure para
falsepara instâncias domongodque recebem queries de clientes.Configurar
buildIndexesparafalsepode ser útil se todas as seguintes condições forem verdadeiras:you are only using this instance to perform backups using
mongodump, andeste membro não receberá queries e
a criação e a manutenção de índices sobrecarregam o sistema hospedeiro.
Mesmo se definido como
false, os secundários construirão índices no campo_idpara facilitar as operações necessárias para replicação.Aviso
If you set
members[n].buildIndexestofalse, you must also setmembers[n].priorityto0. Ifmembers[n].priorityis not0, MongoDB will return an error when attempting to add a member withmembers[n].buildIndexesequal tofalse.Para garantir que o membro não receba nenhuma query, você deve criar todas as instâncias que não construam índices ocultos.
Other secondaries cannot replicate from a member where
members[n].buildIndexesis false.
members[n].hiddenOpcional.
Tipo: booleano
Padrão: false
Quando este valor é
true, o conjunto de réplicas oculta esta instância e não inclui o nó na saída dedb.hello()ouhello. Isso impede que as operações de leitura (ou seja, query) cheguem a esse host por meio de preferência de leiturasecundária.Hidden members can acknowledge write operations issued with Write Concern. For write operations issued with
"majority"write concern, the member must also be a voting member (that is,votesis greater than0).
members[n].priorityOpcional.
Tipo: Número entre 0 e 1000 para nós primários/secundários, ou 0 ou 1 para árbitros.
Padrão: 1.0 para nós primários/secundários, ou 0 para árbitros.
Um número que indica a probabilidade relativa de um membro do conjunto de réplicas se tornar o primário.
Para aumentar a probabilidade de um membro se tornar o principal, especifique um valor
prioritymaior para este membro.Para diminuir a probabilidade de um membro se tornar o primário, especifique um valor menor de
prioritypara esse membro.
Alterar a prioridade de um membro aciona uma ou mais eleições. O algoritmo de eleição faz o melhor esforço possível para eleger o membro de maior prioridade como primário. No entanto, um membro de prioridade mais baixa pode se tornar o primário mesmo que um secundário de prioridade mais alta esteja disponível.
Se um membro de menor prioridade se tornar o primário, o servidor continuará convocando eleições periodicamente até que o membro do conjunto de réplicas de maior prioridade seja o primário. A frequência com que as eleições ocorrem depende da diferença de prioridade entre o membro eleito e o membro de maior prioridade.
Um membro com prioridade de
0não pode se tornar o principal.Non-voting members (meaning members that have
votesset to0) must have a priority of0.
members[n].tagsOpcional.
Tipo: document
Padrão: nenhum
Um documento
tagscontém um campo de tag definido pelo usuário e pares de valores para o membro do conjunto de réplica.{ "<tag1>": "<string1>", "<tag2>": "<string2>",... } Para operações de leitura, você pode especificar um conjunto de tags na preferência de leitura para direcionar as operações para membros do conjunto de réplicas com as tags especificadas.
For write operations, you can create a customize write concern using
settings.getLastErrorModesandsettings.getLastErrorDefaults.
Para obter mais informações, consulte Configurar conjuntos de tags de conjunto de réplica.
members[n].secondaryDelaySecsOpcional.
Tipo: inteiro
Padrão: 0
O número de segundos "atrás" do primário que esse membro do set deve "atrasar".
Use esta opção para criar membros atrasados. Membros atrasados mantêm uma cópia dos dados que reflete o estado dos dados em algum momento no passado.
Delayed members can contribute to acknowledging write operations issued with Write Concern. However, they return write acknowledgment no earlier than the configured delay value. For write operations issued with
"majority"write concern, the member must also be a voting member (that is,votesis greater than0).
members[n].votesOpcional.
Tipo: inteiro
Padrão: 1
O número de votos que um servidor lançará em uma eleição de conjunto de réplica. O número de votos que cada membro tem é
1ou0, e árbitros sempre têm exatamente1voto.Members with
prioritygreater than 0 cannot have 0votes.A replica set can have up to 50 members but only 7 voting members. If you need more than 7 members in one replica set, set
members[n].votesto0for the additional non-voting members.Membros não votantes (p. ex.,
votesé0) devem terpriorityde 0.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.Membros sem direito a voto não podem reconhecer as operações de gravação emitidas com a write concern
"majority".
settings
settingsOpcional.
Tipo: document
Um documento que contém opções de configuração que se aplicam a todo o conjunto de réplicas.
The
settingsdocument contains the following fields:settings.chainingAllowedOpcional.
Tipo: booleano
Padrão: true
In MongoDB 5.0.1 and earlier, if
settings.chainingAllowedis:true, os membros secundários do conjunto de réplica podem replicar dados de outros membros secundários.false, os membros secundários podem replicar os dados somente do principal.
A partir do MongoDB 5.0.2:
With an override enabled, replica set secondary members can replicate data from other secondary members even if
settings.chainingAllowedisfalse.To override
settings.chainingAllowedand allow replication from a secondary member, set theenableOverrideClusterChainingSettingserver parameter totrue.O padrão para
enableOverrideClusterChainingSettingéfalse.
settings.getLastErrorDefaultsOpcional.
Tipo: document
Indisponível a partir do MongoDB 5.0.
Importante
Starting in MongoDB 5.0, you cannot specify a default write concern with
settings.getLastErrorDefaultsother than the default of{ w: 1, wtimeout: 0 }. Instead, use thesetDefaultRWConcerncommand to set the default read or write concern configuration for a replica set or sharded cluster.
settings.getLastErrorModesOpcional.
Tipo: document
A document used to define a custom write concern through the use of
members[n].tags. The custom write concern can provide data-center awareness.{ getLastErrorModes: { <name of write concern> : { <tag1>: <number>, .... }, ... } } The
<number>refers to the number of different tag values required to satisfy the write concern. For example, the followingsettings.getLastErrorModesdefines a write concern nameddatacenterthat requires the write to propagate to two members whosedctag values differ.{ getLastErrorModes: { datacenter: { "dc": 2 } } } Para usar a write concern personalizada, passe o nome da write concern para a opção
w, por exemplo:{ w: "datacenter" } Consulte Configurar conjuntos de tags de conjunto de réplica para obter mais informações e exemplos.
settings.heartbeatTimeoutSecsOpcional.
Tipo: int
Padrão: 10
Número de segundos que os membros do conjunto de réplica esperam por uma pulsação bem-sucedida uns dos outros. Se um membro não responder a tempo, outros membros marcarão o membro delinquente como inacessível.
settings.electionTimeoutMillisOpcional.
Tipo: int
Padrão: 10000 (10 segundos)
The time limit in milliseconds for detecting when a replica set's primary is unreachable. This setting controls failover sensitivity when using
protocolVersion: 1. You can expect the failover timeout to not exceed the value ofelectionTimeoutMillis.Considere o seguinte ao selecionar um valor:
Valores mais altos resultam em failovers mais lentos, mas diminuem a sensibilidade à lentidão ou irregularidade do nó primário ou da rede.
Valores mais baixos resultam em failover mais rápido, mas maior sensibilidade ao nó primário ou à lentidão ou à fragmentação da rede.
The setting only applies when using
protocolVersion: 1.Observação
Quando você desiste de uma primário usando
rs.stepDown()oureplSetStepDownsem definir o campoforcecomotrue, a primário reduzida indica um secundário elegível para convocar uma eleição imediatamente.
settings.catchUpTimeoutMillisOpcional.
Tipo: int
Padrão: -1, tempo de recuperação infinito.
Limite de tempo, em milésimos de segundo, para que um primário recém-eleito sincronize (recupere o atraso) com os outros membros do conjunto de réplicas que podem ter gravações mais recentes. Limites de tempo infinitos ou altos podem reduzir a quantidade de dados que os outros membros precisariam reverter após uma eleição, mas podem aumentar o tempo de failover.
A primário recém-eleita termina o período de recuperação mais cedo, uma vez que é totalmente alcançada com outros membros do conjunto. Durante o período de recuperação, um primário recém-eleito não está disponível para escritas de clientes. Use
replSetAbortPrimaryCatchUppara abortar a recuperação e, em seguida, concluir a transição para a primária.The setting only applies when using
protocolVersion: 1.
settings.catchUpTakeoverDelayMillisOpcional.
Tipo: int
Padrão: 30000 (30 segundos)
Tempo, em milésimos de segundo, que um nó aguarda para iniciar uma catchup takeover após determinar que está à frente do primário atual. Durante um catchup takeover, o nó à frente do primário atual inicia uma eleição para se tornar o novo primário do conjunto de réplicas.
Depois que o nó que inicia a aquisição determina que está à frente do primário atual, ele espera o número especificado de milésimos de segundo e, em seguida, verifica o seguinte:
Ainda está à frente do current primário,
É o nó mais atualizado entre todos os nós disponíveis,
O primário atual está alcançando isso.
Depois de determinar que todas essas condições foram atendidas, o nodo que inicia a aquisição imediatamente concorre às eleições.
Para obter mais informações sobre as Eleições do Conjunto de Réplica, consulte Eleições do Conjunto de Réplica.
Observação
Setting
catchUpTakeoverDelayMillisto-1disables catchup takeover. SettingcatchUpTimeoutMillisto0disables primary catchup and consequently also catchup takeover.
settings.heartbeatIntervalMillisSomente para uso interno.
A frequência em milésimos de segundo das batidas cardíacas.
settings.replicaSetIdTipo: ObjectId
The ObjectId associated with the replica set and automatically created during
rs.initiate()orreplSetInitiate. You cannot change thereplicaSetId.