Docs Menu
Docs Home
/ /

rs.reconfigForPSASet() (método mongosh)

rs.reconfigForPSASet( memberIndex, config, { options } )

Nuevo en la versión 5.0.

Realice cambios de reconfiguración de forma segura en un conjunto de réplicas de árbitro principal-secundario (PSA) o en un conjunto de réplicas que esté cambiando a una arquitectura PSA. Este método solo debe usarse en uno de los siguientes casos:

  • Desea reconfigurar un secundario en un conjunto de réplicas existente de tres miembros con una arquitectura PSA para convertirse en un nodo de votación y portador de datos con un valor distinto de cero. priority.

  • Desea agregar un nuevo nodo con votación y almacenamiento de datos con una prioridad distinta de cero a un conjunto de réplicas existente de dos miembros que contiene un nodo con votación y almacenamiento de datos y un árbitro.

Advertencia

Si el secundario que está agregando está retrasado y el conjunto de réplicas resultante es una configuración PSA, el primer cambio de configuración modificará la cantidad de nodos que deben confirmar un cambio "majority" con. En este caso, su punto de confirmación se retrasará hasta que el secundario se recupere.

Para obtener detalles sobre el comportamiento de este método, consulte Comportamiento.

Este método está disponible en implementaciones alojadas en los siguientes entornos:

  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

El método rs.reconfigForPSASet() tiene la siguiente sintaxis:

rs.reconfigForPSASet(
memberIndex: <num>,
config: <configuration>,
{
"force" : <boolean>,
"maxTimeMS" : <int>
}
)
Parameter
Tipo
Descripción

memberIndex

entero

El índice del secundario que se está agregando o modificando.

config

Documento

Un documento que especifica la nueva configuración de un conjunto de réplicas.

force

booleano

Opcional

ADVERTENCIA: No se recomienda ejecutar el método rs.reconfigForPSASet() con force: true ya que puede provocar que se reviertan las escrituras confirmadas.

Especifique true para forzar a los miembros del conjunto de réplicas disponibles a aceptar la nueva configuración. El valor predeterminado es false.

La reconfiguración forzada puede generar un comportamiento inesperado o no deseado, incluida la reversión de "majority" escrituras confirmadas.

maxTimeMS

entero

Opcional

Especifica un límite de tiempo acumulado en milisegundos para procesar cada reconfiguración durante la rs.reconfigForPSASet() operación. De forma predeterminada, rs.reconfigForPSASet() espera indefinidamente a que las configuraciones de réplica se propaguen a la mayoría de los miembros del conjunto de réplicas.

El método reconfigura su conjunto de réplicas en dos rs.reconfigForPSASet() pasos:

  1. El método reconfigura su conjunto de réplicas para agregar o modificar una secundaria con { votes: 1, priority: 0 }.

  2. Una vez que el secundario añadido o modificado se haya puesto al día con todos los guardados confirmados, el método reconfigura el secundario para que tenga el priority especificado en el comando rs.reconfigForPSASet() ({ votes: 1, priority: <num> }).

El enfoque de dos pasos evita la posibilidad de revertir escrituras comprometidas en el caso de una conmutación por error al nuevo secundario antes de que este tenga todas las escrituras comprometidas de la configuración anterior.

Un set de réplicas llamado rs0 tiene la siguiente configuración:

{
"_id" : "rs0",
"version" : 1,
"term": 1,
"members" : [
{
"_id" : 0,
"host" : "mongodb0.example.net:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {},
"secondaryDelaySecs" : Long("0"),
"votes" : 1
},
{
"_id" : 2,
"host" : "mongodb1.example.net:27017",
"arbiterOnly" : true,
"buildIndexes" : true,
"hidden" : false,
"priority" : 0,
"tags" : {},
"secondaryDelaySecs" : Long("0"),
"votes" : 1
}
],
"protocolVersion" : Long("1"),
"writeConcernMajorityJournalDefault": true,
"settings" : {
"chainingAllowed" : true,
"heartbeatIntervalMillis" : 2000,
"heartbeatTimeoutSecs" : 10,
"electionTimeoutMillis" : 10000,
"catchUpTimeoutMillis" : 2000,
"getLastErrorModes" : {},
"getLastErrorDefaults" : {
"w" : 1,
"wtimeout" : 0
},
"replicaSetId" : ObjectId("60e6f83923193faa336889d2")
}
}

La siguiente secuencia de operaciones añade un nuevo secundario al conjunto de réplicas. Las operaciones se emiten en el shell mongosh mientras se está conectado a la primaria.

cfg = rs.conf();
cfg["members"] = [
{
"_id" : 0,
"host" : "mongodb0.example.net:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {},
"secondaryDelaySecs" : Long("0"),
"votes" : 1
},
{
"_id" : 1,
"host" : "mongodb1.example.net:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 2,
"tags" : {},
"secondaryDelaySecs" : Long("0"),
"votes" : 1
},
{
"_id" : 2,
"host" : "mongodb2.example.net:27017",
"arbiterOnly" : true,
"buildIndexes" : true,
"hidden" : false,
"priority" : 0,
"tags" : {},
"secondaryDelaySecs" : Long("0"),
"votes" : 1
}
]
rs.reconfigForPSASet(1, cfg);
  1. La primera instrucción utiliza el método rs.conf() para recuperar un documento que contiene la configuración actual del set de réplicas y almacena el documento en la variable local cfg.

  2. La segunda instrucción añade el nuevo secundario a la members matriz. En esta configuración, el nuevo secundario se añade memberIndex 1 en. El memberIndex coincide con el índice de la matriz. Para obtener más información, consulte la configuración del conjunto de réplicas.

  3. La última instrucción llama al rs.reconfigForPSASet() método memberIndex 1 cfgcon, y modificado.memberIndex representa la posición del nuevo miembro en la members matriz. Tras una reconfiguración exitosa, la configuración del conjunto de réplicas se asemeja a la siguiente:

    {
    "_id" : "rs0",
    "version" : 1,
    "term": 1,
    "members" : [
    {
    "_id" : 0,
    "host" : "mongodb0.example.net:27017",
    "arbiterOnly" : false,
    "buildIndexes" : true,
    "hidden" : false,
    "priority" : 1,
    "tags" : {},
    "secondaryDelaySecs" : Long("0"),
    "votes" : 1
    },
    {
    "_id" : 1,
    "host" : "mongodb1.example.net:27017",
    "arbiterOnly" : false,
    "buildIndexes" : true,
    "hidden" : false,
    "priority" : 2,
    "tags" : {},
    "secondaryDelaySecs" : Long("0"),
    "votes" : 1
    },
    {
    "_id" : 2,
    "host" : "mongodb2.example.net:27017",
    "arbiterOnly" : true,
    "buildIndexes" : true,
    "hidden" : false,
    "priority" : 0,
    "tags" : {},
    "secondaryDelaySecs" : Long("0"),
    "votes" : 1
    }
    ],
    "protocolVersion" : Long("1"),
    "writeConcernMajorityJournalDefault": true,
    "settings" : {
    "chainingAllowed" : true,
    "heartbeatIntervalMillis" : 2000,
    "heartbeatTimeoutSecs" : 10,
    "electionTimeoutMillis" : 10000,
    "catchUpTimeoutMillis" : 2000,
    "getLastErrorModes" : {},
    "getLastErrorDefaults" : {
    "w" : 1,
    "wtimeout" : 0
    },
    "replicaSetId" : ObjectId("60e6f83923193faa336889d2")
    }
    }

Tip

Volver

rs.reconfig

En esta página