Puede acceder a la configuración de un conjunto de réplicas utilizando el rs.conf()Método o el replSetGetConfig comando.
Para modificar la configuración de un Set de réplicas, utiliza el método rs.reconfig(), pasando un documento de configuración al método. Consulta rs.reconfig() para más información.
Advertencia
Evitar reconfigurar sets de réplicas que contengan miembros de diferentes versiones de MongoDB, ya que las reglas de validación pueden diferir entre versiones de MongoDB.
Ejemplo de documento de configuración de Set de réplicas
El siguiente documento proporciona una representación de un documento de configuración del set de réplicas. La configuración del set de réplicas puede incluir solo un subconjunto de estos ajustes:
{ _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> } }
Configuración de los campos de set de réplicas
_idTipo: string
El nombre del set de réplicas.
_iddebe ser idéntico alreplication.replSetNameo al valor de--replSetespecificado paramongoden la línea de comandos.Tip
Consulte:
versionTipo: int
Un número incremental utilizado para distinguir las revisiones del Set de réplicas de la configuración de las iteraciones anteriores de la configuración.
Los miembros del Set de réplicas utilizan
termyversionpara lograr un consenso sobre la configuración de réplica "más reciente". Cuando los miembros comparan documentos de configuración de réplicas, el documento de configuración con untermmayor se considera el "más reciente". Sitermes el mismo o está ausente, el documento de configuración con elversionmayor se considera "el más reciente".
termTipo: int
Solo disponible con featureCompatibilityVersion (compatibilidad de características entre versiones) "4.4" o posterior.
Un número incremental utilizado para distinguir las revisiones del documento de configuración del Set de réplicas de las iteraciones anteriores de la configuración. La
termde un documento de configuración coincide con el término del Set de réplicas primario que realizó la reconfiguración. El Primario incrementa su término cada vez que asume el control después de ganar una elección. El primario ignora el campotermsi se establece explícitamente en la operaciónreplSetReconfig.Emitir una reconfiguración forzada remueve el campo
term. Cuando el primario siguiente emitereplSetReconfigsin fuerza, establece elterma su propio término.Los miembros del Set de réplicas utilizan
termyversionpara lograr un consenso sobre la configuración de réplica "más reciente". Cuando los miembros comparan documentos de configuración de réplicas, el documento de configuración con untermmayor se considera el "más reciente". Sitermes el mismo o está ausente, el documento de configuración con elversionmayor se considera "el más reciente".
configsvrTipo: booleano
Por defecto: false
Se indica si el set de réplicas se utiliza para los servidores de configuración de un clúster. Establecer en
truesi el set de réplicas es para los servidores de configuración de un clúster.
protocolVersionTipo: número
Por defecto: 1
MongoDB solo admite
protocolVersion: 1y ya no admiteprotocolVersion: 0.
writeConcernMajorityJournalDefaultTipo: booleano
Por defecto: true
Se determina el comportamiento del
{ w: "majority" }nivel de confirmación de escritura si el nivel de confirmación de escritura no especifica explícitamente la opción de diario j.La siguiente tabla enumera los valores de
writeConcernMajorityJournalDefaulty el comportamiento{ w: "majority" }asociado:Valor{ w: "majority" }Comportamientotrue
MongoDB reconoce la operación de escritura después de que la mayoría de los miembros votantes hayan escrito en la bitácora en disco.
IMPORTANTE: todos los miembros votantes del set de réplicas deben ejecutar con registro en la bitácora cuando
writeConcernMajorityJournalDefaultseatrue.Si algún nodo votante de un set de réplicas utiliza el motor de almacenamiento en memoria, debe establecer
writeConcernMajorityJournalDefaultenfalse.Si algún nodo votante de un Set de réplicas utiliza el motor de almacenamiento en memoria y
writeConcernMajorityJournalDefaultestrue, las operaciones de"majority"guardar pueden fallar. Estas incluyen operaciones que utilizan inherentemente el nivel de confirmación de escritura"majority", como el comandoreplSetStepDown, o varios métodosmongoshque por defecto utilizan el nivel de confirmación de escritura"majority", como los métodos de gestión de usuarios y los métodos de gestión de roles.A partir de la versión 4.2 (y 4.0.13 y 3.6.14 ), si un miembro del set de réplicas utiliza el motor de almacenamiento en memoria (votante o no votante) pero el set de réplicas tiene
writeConcernMajorityJournalDefaultestablecido en true, el miembro del set de réplicas registra una advertencia de inicio.false
MongoDB reconoce la operación de guardar después de que la mayoría de los miembros votantes hayan aplicado la operación en memoria.
ADVERTENCIA:
Si algún nodo votante de un set de réplicas utiliza el motor de almacenamiento en memoria, debe establecer
writeConcernMajorityJournalDefaultenfalse.A partir de la versión 4.2 (y 4.0.13 y 3.6.14 ), si un miembro del set de réplicas utiliza el motor de almacenamiento en memoria (votante o no votante) pero el set de réplicas tiene
writeConcernMajorityJournalDefaultestablecido en true, el miembro del set de réplicas registra una advertencia de inicio.No puedes ejecutar transacciones en un clúster que tenga una partición con
writeConcernMajorityJournalDefaultconfigurado enfalse(como una partición con un nodo votante que utiliza el motor de almacenamiento en memoria).
members
membersTipo: arreglo
Un arreglo de documentos de configuración de nodos, uno por cada nodo del Set de réplicas. El
membersarreglo es un arreglo de índice cero.Cada documento de configuración específico del nodo puede contener los siguientes campos:
members[n]._idTipo: entero
Un identificador entero para el nodo en el Set de réplicas, único entre todos los nodos.
A partir de MongoDB 5.0, los valores pueden ser cualquier número entero mayor o igual a
0. Anteriormente, este valor estaba limitado a un número entero entre0y255, inclusive.Cada miembro del conjunto de réplicas debe tener un
_idúnico. Evitar reutilizar los valores_idincluso si ninguna entradamembers[n]está utilizando ese_iden la configuración actual.Una vez establecido, no se puede cambiar el
_idde un nodo.Nota
Al actualizar el objeto de configuración de la réplica, acceda a los miembros del set de réplicas en el
membersarreglo con el índice del arreglo. El índice del arreglo comienza con0. No confundir este valor de índice con el valor del campomembers[n]._iden cada documento del arreglomembers.
members[n].hostTipo: string
El nombre de host y, si se especifica, el número de puerto, del nodo del conjunto.
El nombre del host debe ser resoluble para cada host en el set de réplicas.
Advertencia
members[n].hostno puede contener un valor que se resuelva alocalhosto a la interfaz local a menos que todos los miembros del conjunto estén en hosts que se resuelvan alocalhost.
members[n].arbiterOnlyOpcional.
Tipo: booleano
Por defecto: false
Un valor booleano que identifica a un árbitro. Un valor de
trueindica que el Nodo es un árbitro.Al utilizar el método
rs.addArb()para añadir un árbitro, el método establece automáticamentemembers[n].arbiterOnlyatruepara el nodo añadido.
members[n].buildIndexesOpcional.
Tipo: booleano
Por defecto: true
Un valor booleano que indica si el
mongodcrea índices en este nodo. Solo se puede establecer este valor al añadir un nodo a un set de réplicas. No se puede cambiar el campomembers[n].buildIndexesdespués de que el nodo haya sido añadido al conjunto. Para añadir un nodo, consultarrs.add()yrs.reconfig().No configurar
falsepara las instancias demongodque reciben queries de clientes.Configurar
buildIndexesafalsepuede ser útil si todas las siguientes condiciones son verdaderas:solo está utilizando esta instancia para realizar copias de seguridad usando
mongodump, yeste miembro no recibirá consultas, y
La creación y el mantenimiento de índices sobrecargan el sistema host.
Incluso si se establece en
false, las secundarias crearán índices en el campo_idpara facilitar las operaciones necesarias para la replicación.Advertencia
Si se configura
members[n].buildIndexesafalse, también se debe configurarmembers[n].prioritya0. Simembers[n].priorityno es0, MongoDB devolverá un error al intentar añadir un nodo conmembers[n].buildIndexesigual afalse.Para asegurarse de que el nodo no reciba queries, debe ocultar todas las instancias que no creen índices.
Otros secundarios no pueden replicarse desde un nodo donde
members[n].buildIndexeses falso.
members[n].hiddenOpcional.
Tipo: booleano
Por defecto: false
Cuando este valor es
true, el set de réplicas oculta esta instancia y no incluye al nodo en la salida dedb.hello()ohello. Esto impide las operaciones de lectura (es decir, queries) para que nunca lleguen a este host mediante una preferencia de lectura secundaria.Los miembros ocultos pueden reconocer operaciones de escritura emitidas con nivel de confirmación de escritura. Para las operaciones de escritura emitidas con
"majority"nivel de confirmación de escritura, el nodo también debe ser un nodo con derecho a voto (es decir,voteses mayor que0.
members[n].priorityOpcional.
Tipo: número entre 0 y 1000 para primario/secundario; 0 o 1 para árbitros.
Por defecto: 1.0 para primario/secundario; 0 para árbitros.
Un número que indica la probabilidad relativa de que un miembro de un set de réplicas se convierta en el primario.
Para aumentar la probabilidad de que un nodo se convierta en el primario, especificar un valor
prioritymás alto para ese nodo.Para disminuir la probabilidad de que un Nodo se convierta en el primario, especifica un valor de
prioritymenor para ese Nodo.
Cambiar la prioridad de un nodo activa una o más elecciones. El algoritmo de elección hace un esfuerzo máximo para elegir al nodo de mayor prioridad como primario. Sin embargo, un nodo de menor prioridad puede convertirse en el primario incluso si hay disponible un secundario de mayor Prioridad.
Si un nodo de menor prioridad se convierte en el primario, el servidor continúa convocando elecciones periódicamente hasta que el nodo del set de réplicas de mayor prioridad sea el primario. La frecuencia con la que ocurren las elecciones depende de la diferencia de prioridad entre el nodo elegido y el nodo con la prioridad más alta.
Un nodo con una prioridad de
0no puede convertirse en el primario.Los miembros no votantes (es decir, los miembros que tienen
votesconfigurado en0) deben tener una prioridad de0.
members[n].tagsOpcional.
Tipo: documento
Por defecto: ninguno
Un documento
tagscontiene pares de campo de etiqueta y valor definidos por el usuario para el set de réplicas.{ "<tag1>": "<string1>", "<tag2>": "<string2>",... } Para las operaciones de lectura, se puede especificar un conjunto de etiquetas en la preferencia de lectura para dirigir las operaciones a los miembros del set de réplicas con las etiquetas especificadas.
Para las operaciones de escritura, se puede crear un nivel de confirmación de escritura personalizado utilizando
settings.getLastErrorModesysettings.getLastErrorDefaults.
Para obtener más información, consultar Configurar conjuntos de etiquetas del set de réplicas.
members[n].secondaryDelaySecsOpcional.
Tipo: entero
Por defecto: 0
El número de segundos "de retraso" respecto al primario que este nodo del set de réplicas debe tener.
Utilizar esta opción para crear miembros atrasados. Los miembros atrasados mantienen una copia de los datos que refleja el estado de los datos en algún momento del pasado.
Los miembros atrasados pueden contribuir al reconocimiento de operaciones de escritura emitidas con nivel de confirmación de escritura. Sin embargo, devuelven el reconocimiento de guardado no antes del valor de retraso configurado. Para las operaciones de escritura emitidas con
"majority"nivel de confirmación de escritura, el nodo también debe ser un nodo con derecho a voto (es decir,voteses mayor que0).
members[n].votesOpcional.
Tipo: entero
Por defecto: 1
El número de votos que un servidor emitirá en una elección de set de réplicas. El número de votos que tienen cada nodo es
1o0, y árbitros siempre tienen exactamente1voto.Los miembros con
prioritymayor que 0 no pueden tener 0votes.Un Set de réplicas puede tener hasta50 miembros, pero solo 7 miembros con derecho a voto. Si necesita más de 7 miembros en un Set de réplicas, configure
members[n].votesa0para los miembros adicionales sin derecho a voto.No votantes (es decir,
voteses0) los miembros deben tenerprioritysobre 0.A partir de MongoDB 5.0, un secundario recién agregado no cuenta como nodo votante y no puede ser elegido hasta que alcance el estado
SECONDARY.Los miembros no votantes no pueden reconocer las operaciones de escritura emitidas con un nivel de confirmación de escritura
"majority".
settings
settingsOpcional.
Tipo: documento
Un documento que contiene opciones de configuración que se aplican a todo el set de réplicas.
El
settingsdocumento contiene los siguientes campos:settings.chainingAllowedOpcional.
Tipo: booleano
Por defecto: true
En MongoDB 5.0.1 y versiones anteriores, si
settings.chainingAllowedes:true, los miembros secundarios del set de réplicas pueden replicar datos de otros miembros secundarios.false, los miembros secundarios solo pueden replicar datos desde el nodo primario.
A partir de MongoDB 5.0.2:
Con una anulación habilitada, los miembros secundarios del Set de réplicas pueden replicar datos de otros miembros secundarios incluso si
settings.chainingAllowedestáfalse.Para anular
settings.chainingAllowedy permitir la replicación desde un miembro secundario, establezca el parámetro de servidorenableOverrideClusterChainingSettingatrue.El valor por defecto para
enableOverrideClusterChainingSettingesfalse.
settings.getLastErrorDefaultsOpcional.
Tipo: documento
No disponible a partir de MongoDB 5.0.
Importante
A partir de MongoDB 5.0, no se podrá especificar un nivel de confirmación de escritura por defecto con
settings.getLastErrorDefaultsque no sea el por defecto de{ w: 1, wtimeout: 0 }. En su lugar, se utiliza el comandosetDefaultRWConcernpara establecer la configuración por defecto de nivel de confirmación de escritura para un set de réplicas o un clúster particionado.
settings.getLastErrorModesOpcional.
Tipo: documento
Un documento utilizado para definir un nivel de confirmación de escritura personalizado mediante el uso de
members[n].tags. El nivel de confirmación de escritura personalizado puede proporcionar conciencia del centro de datos.{ getLastErrorModes: { <name of write concern> : { <tag1>: <number>, .... }, ... } } El
<number>se refiere al número de valores de etiquetas diferentes necesarios para cumplir con el nivel de confirmación de escritura. Por ejemplo, el siguientesettings.getLastErrorModesdefine un nivel de confirmación de escritura llamadodatacenterque requiere que la escritura se propague a dos miembros cuyos valores de etiquetadcsean diferentes.{ getLastErrorModes: { datacenter: { "dc": 2 } } } Para utilizar el nivel de confirmación de escritura personalizado, pase el nombre del nivel de confirmación de escritura a la
wopción, por ejemplo.{ w: "datacenter" } Consultar Configurar conjuntos de etiquetas de sets de réplicas para obtener más información y un ejemplo.
settings.heartbeatTimeoutSecsOpcional.
Tipo: int
Por defecto: 10
Número de segundos que los miembros del set de réplicas esperan para recibir un latido exitoso entre sí. Si un nodo no responde a tiempo, otros nodos marcan al nodo moroso como inaccesible.
settings.electionTimeoutMillisOpcional.
Tipo: int
Por defecto: 10000 (10 segundos)
El límite de tiempo en milisegundos para detectar cuándo el primario de un set de réplicas es inalcanzable. Esta configuración controla la sensibilidad de la conmutación por error al utilizar
protocolVersion: 1. Se puede esperar que el tiempo de espera de conmutación por error no supere el valor deelectionTimeoutMillis.Considere lo siguiente al seleccionar un valor:
Valores más altos resultan en conmutaciones por error más lentas, pero disminuyen la sensibilidad a la lentitud o irregularidad del nodo primario o de la red.
Valores más bajos resultan en una conmutación por error más rápida, pero aumentan la sensibilidad a la lentitud o irregularidad del nodo primario o de la red.
La configuración solo se aplica al usar
protocolVersion: 1.Nota
Cuando se desciende un primario usando
rs.stepDown()oreplSetStepDownsin establecer el campoforceatrue, el primario descendido nomina a un secundario elegible para llamar a una elección inmediatamente.
settings.catchUpTimeoutMillisOpcional.
Tipo: int
Por defecto: -1, tiempo de sincronización infinito.
Límite de tiempo en milisegundos para que un primario recién elegido se sincronice (se ponga al día) con los otros miembros del Set de réplicas que puedan tener guardados más recientes. Los límites de tiempo infinitos o altos pueden reducir la cantidad de datos que los demás miembros necesitarían revertir tras una elección, pero pueden aumentar el tiempo de conmutación por error.
El nuevo primario elegido termina el período de sincronización antes de tiempo una vez que se ha sincronizado completamente con los demás miembros del conjunto. Durante el periodo de sincronización, el nodo primario recién elegido no está disponible para que los clientes guarden. Utilizar
replSetAbortPrimaryCatchUppara abortar la sincronización y luego completar la transición a primaria.La configuración solo se aplica al usar
protocolVersion: 1.
settings.catchUpTakeoverDelayMillisOpcional.
Tipo: int
Por defecto: 30000 (30 segundos)
Tiempo en milisegundos que un nodo espera para iniciar una toma de control de recuperación después de determinar que está por delante del primario actual. Durante una toma de control de recuperación, el nodo que está por delante de la primaria actual inicia una elección para convertirse en la nueva primaria del set de réplicas.
Después de que el nodo que inicia la toma de control determina que está por delante del primario actual, espera el número especificado de milisegundos y luego verifica lo siguiente:
Todavía está por delante del primario actual,
Es el nodo más actualizado entre todos los nodos disponibles,
El primario actual está alcanzándolo.
Una vez que se determina que se cumplen todas estas condiciones, el nodo que inicia la toma de control se ejecuta inmediatamente para la elección.
Para obtener más información sobre las elecciones de set de réplicas, consulta elecciones de set de réplicas.
Nota
Configurar
catchUpTakeoverDelayMillisen-1desactiva la toma de control de recuperación. EstablecercatchUpTimeoutMillisa0desactiva la sincronización primaria y, en consecuencia, también la toma de control de la sincronización.
settings.heartbeatIntervalMillisSolo para uso interno.
La frecuencia en milisegundos de los latidos cardíacos.
settings.replicaSetIdTipo: ObjectId
El ObjectId asociado con el Set de réplicas y creado automáticamente durante
rs.initiate()oreplSetInitiate. No puedes cambiar elreplicaSetId.