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.
Os membros do conjunto de réplica utilizam
termeversionpara obter consenso sobre o "mais recente" configuração de réplica. Quando os membros comparam documentos de configuração de réplica, o documento de configuração com um maiortermé considerado o "mais novo". Se o for o mesmo ou ausente,termversiono documento de configuração com o maior será considerado "mais novo".
termTipo: int
Disponível apenas com versão de compatibilidade do recurso (FCV) "4.4" ou posterior.
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. O
termde um documento de configuração corresponde ao termo do conjunto de réplica primário que executou a reconfiguração. O primário aumenta seu termo cada vez que avança após vencer uma eleição. O primário ignora o campo setermreplSetReconfigdefinido explicitamente na operação.A emissão de uma reconfiguração de força remove o campo . Quando
termreplSetReconfigas edições primário primárias sem força,termela define o para seu próprio termo.Os membros do conjunto de réplica utilizam
termeversionpara obter consenso sobre o "mais recente" configuração de réplica. Quando os membros comparam documentos de configuração de réplica, o documento de configuração com um maiortermé considerado o "mais novo". Se o for o mesmo ou ausente,termversiono documento de configuração com o maior será considerado "mais novo".
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.Se algum membro votante de um conjunto de réplicas usar o mecanismo de armazenamento na memória, você deverá
writeConcernMajorityJournalDefaultdefinirfalsecomo.Se qualquer membro de votação de um conjunto de réplica utilizar o mecanismo de armazenamento in-memory e
writeConcernMajorityJournalDefaultfortrue, as operações de gravação do"majority"poderão falhar. Isso inclui operações que usam inerentemente a preocupação de gravação"majority", como o comandoreplSetStepDown, ou vários métodosmongoshque, por padrão, usam a preocupação de gravação"majority", como métodos de gerenciamento de usuários e métodos de gerenciamento de funções.A partir da versão 4.2 (e 4.0.13 e 3.6.14 ), se um membro do conjunto de réplicas usar o mecanismo de armazenamento na memória (com ou sem votação), mas o conjunto de réplicas tiver
writeConcernMajorityJournalDefaultdefinido como verdadeiro, a réplica O membro set registra um aviso de inicialização.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:Se algum membro votante de um conjunto de réplicas usar o mecanismo de armazenamento na memória, você deverá
writeConcernMajorityJournalDefaultdefinirfalsecomo.A partir da versão 4.2 (e 4.0.13 e 3.6.14 ), se um membro do conjunto de réplicas usar o mecanismo de armazenamento na memória (com ou sem votação), mas o conjunto de réplicas tiver
writeConcernMajorityJournalDefaultdefinido como verdadeiro, a réplica O membro set registra um aviso de inicialização.Não é possível executar transações em um cluster fragmentado que tenha um fragmento com definido
writeConcernMajorityJournalDefaultcomofalse(como um fragmento com um membro votante que usa o mecanismo de armazenamento na memória).
members
membersTipo: array
Uma array de documentos de configuração de membros, um para cada membro do conjunto de réplicas. A
membersarray é uma array indexada a zero.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.Cada membro do conjunto
_idde_idréplicas deve ter um único. Evite reutilizar valores do mesmo que nenhumamembers[n]entrada do esteja utilizando este_idna configuração atual.Após configurar, você não poderá alterar o de um
_idmembro.Observação
Ao atualizar o objeto de configuração da réplica, acesse os membros do conjunto de réplicas na
membersarray com o índice da array. O índice da array começa0com.Não confunda este valor de índice com o valor do campo emmembers[n]._idmemberscada documento na array.
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].hostnão pode conter um valor que produzalocalhostou a interface local, a menos que todos os membros do conjunto estejam em hosts quelocalhostproduzam.
members[n].arbiterOnlyOpcional.
Tipo: booleano
Padrão: false
Um booleano que identifica um árbitro. Um valor de
trueindica que o membro é um árbitro.Ao utilizar o método para adicionar um árbitro, o método define
rs.addArb()automaticamentemembers[n].arbiterOnlytruepara o membro adicionado.
members[n].buildIndexesOpcional.
Tipo: booleano
Padrão: true
Um booleano que indica se o
mongodcria índices nesse membro. Você só pode definir esse valor ao adicionar um membro a um conjunto de réplicas. Não é possível alterar campo depois que o membro tiver sido adicionado ao conjunto. Para adicionar um membro,members[n].buildIndexesconsulters.add()rs.reconfig()e.Não configure para
falsepara instâncias domongodque recebem queries de clientes.Configurar
buildIndexesparafalsepode ser útil se todas as seguintes condições forem verdadeiras:você só está usando esta instância para executar backups usando
mongodumpeeste 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
Se você
members[n].buildIndexesdefinirfalsecomo, também deverámembers[n].prioritydefinir0como. Semembers[n].prioritynão0for, MongoDB retornará um erro ao tentar adicionar um membro commembers[n].buildIndexesigualfalsea.Para garantir que o membro não receba nenhuma query, você deve criar todas as instâncias que não construam índices ocultos.
Outros segundários não podem replicar de um membro onde é
members[n].buildIndexesfalso.
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.Os membros ocultos podem reconhecer operações de gravação emitidas com o Write Concern. Para operações de gravação emitidas com preocupação
"majority"de gravação, o nó também deve ser um nó votante (ou seja, évotesmaior0que).
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.Os membros sem direito a voto (ou seja, membros que têm
votesdefinido0como) devem ter uma prioridade0de.
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.
Para operações de gravação, você pode criar uma preocupação de gravação personalizada usando
settings.getLastErrorModese.settings.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.
Os membros atrasados podem contribuir para o reconhecimento de operações de gravação emitidas com o Write Concern. No entanto, eles retornam a confirmação de gravação não antes do valor de atraso configurado. Para operações de gravação emitidas com
"majority"preocupação de gravação, o nó também deve ser um nó votante (ou seja, évotesmaior0que).
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.Membros com maior
priorityque 0 não podem 0votester.Um conjunto de réplicas pode ter até 50 membros, mas apenas 7 membros votantes. Se você precisar de mais de 7 membros em um conjunto de réplicas, defina
members[n].votescomo0para os membros adicionais sem direito a voto.Os membros sem direito a voto (ou
votesseja,0é) devem terpriority0de.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.
O documento contém os seguintes
settingscampos:settings.chainingAllowedOpcional.
Tipo: booleano
Padrão: true
No MongoDB 5.0.1 e anteriores, se
settings.chainingAllowedfor: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:
Com uma substituição ativada, os membros secundários do conjunto de réplicas podem replicar dados de outros membros secundários, mesmo
settings.chainingAllowedquefalseseja.Para substituir e permitir a replicação de
settings.chainingAllowedenableOverrideClusterChainingSettingum membro secundário,truedefina o parâmetro do servidor como.O padrão para
enableOverrideClusterChainingSettingéfalse.
settings.getLastErrorDefaultsOpcional.
Tipo: document
Indisponível a partir do MongoDB 5.0.
Importante
A partir do MongoDB,5.0 você não pode especificar uma preocupação de gravação padrão com diferente
settings.getLastErrorDefaultsdo{ w: 1, wtimeout: 0 }padrão. Em vez disso, use osetDefaultRWConcerncomando para definir a configuração padrão de preocupação de gravação para um conjunto de réplicas ou cluster fragmentado.
settings.getLastErrorModesOpcional.
Tipo: document
Um documento usado para definir uma preocupação de gravação personalizada por meio do uso de. A preocupação de gravação personalizada pode
members[n].tagsfornecer reconhecimento de data center.{ getLastErrorModes: { <name of write concern> : { <tag1>: <number>, .... }, ... } } O
<number>se refere ao número de valores de tag diferentes necessários para satisfazer o preocupação de gravação. Por exemplo, o seguinte define uma preocupação de gravaçãosettings.getLastErrorModesdenominadadatacenterque exige que a gravação propague para dois membros cujosdcvalores de tag diferem.{ 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)
O limite de tempo em milésimos de segundo para detectar quando um conjunto de réplica principal não está acessível. Essa configuração controla a sensibilidade ao failover ao
protocolVersion: 1usar. Você pode esperar que o tempo limite de failover não exceda o valorelectionTimeoutMillisde.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.
A configuração só se aplica ao
protocolVersion: 1usar.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.A configuração só se aplica ao
protocolVersion: 1usar.
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
catchUpTakeoverDelayMillis-1A definição de para desativa a aquisição de catchup. SettingcatchUpTimeoutMillispara0desativa a primário catchup e, consequentemente, também catchup takeover.
settings.heartbeatIntervalMillisSomente para uso interno.
A frequência em milésimos de segundo das batidas cardíacas.
settings.replicaSetIdTipo: ObjectId
O ObjectId associado ao conjunto de réplica e criado automaticamente durante ou. Você não pode
rs.initiate()replSetInitiatealterarreplicaSetIdo.