A partir de la versión 2.0, MongoDB admite replicación encadenada. La replicación en cadena ocurre cuando un miembro secundario replica de otro miembro secundario en lugar de hacerlo desde el primario. Este podría ser el caso, por ejemplo, si una secundario selecciona su origen de replicación en función del tiempo de ping y si el nodo más cercano es otro secundario. La fuente de replicación para la operación es el nodo del cual se leen los datos.
La replicación en cadena puede reducir la carga en el primario. Pero la replicación en cadena también puede resultar en un mayor atraso de la replicación, dependiendo de la topología de la red.
Puede utilizar la opción settings.chainingAllowed en Configuración del set de réplicas autogestionado para desactivar la replicación en cadena en situaciones donde la replicación en cadena esté causando retrasos.
MongoDB permite la replicación encadenada por defecto. Este procedimiento describe cómo desactivarlo y cómo volver a activarlo.
Nota
Si deshabilitas la replicación encadenada, el comando replSetSyncFrom y el método rs.syncFrom() no tienen efecto.
Deshabilitar la replicación encadenada
Para desactivar la replicación encadenada, establece el campo settings.chainingAllowed en Configuración del conjunto de réplicas autogestionado en false.
Puedes utilizar la siguiente secuencia de comandos para establecer settings.chainingAllowed en false:
Copia la configuración en el objeto
cfg:cfg = rs.config() Toma nota de si la configuración contiene el documento incrustado
settings. Si es así, salta este paso.Advertencia
Para evitar la pérdida de datos, omite este paso si la configuración contiene el documento incrustado
settings.Si la configuración actual no contiene el documento incrustado
settings, crea el documento incrustado ejecutando el siguiente comando:cfg.settings = { } Emite la siguiente secuencia de comandos para establecer
settings.chainingAllowedenfalse:cfg.settings.chainingAllowed = false rs.reconfig(cfg)
Rehabilitar la Replicación Encadenada
Para volver a habilitar la replicación encadenada, establece settings.chainingAllowed en true. Puedes usar la siguiente secuencia de comandos:
cfg = rs.config() cfg.settings.chainingAllowed = true rs.reconfig(cfg)