Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

rs.reconfigForPSASet() (método mongosh)

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

Nuevo en la versión 5.0.

Effectuez en toute sécurité certains changements de reconfiguration sur un set de réplicas primario-secundario-árbitro (PSA) ou sur un set de réplicas qui passe à une architecture PSA. Vous ne devez utiliser cette méthode que dans l’un des cas suivants :

  • Se desea reconfigurar un secundario en un set de réplicas existente de tres nodos con una arquitectura PSA para que se convierta en un nodo votante y portador de datos con un valor distinto de cero. priority.

  • Desea agregar un nuevo nodo que pueda votar y que contenga datos, con una prioridad distinta de cero, a un existente set de réplicas de dos miembros que contiene un nodo de datos con capacidad de voto y un árbitro.

Advertencia

Si el secundario que estás agregando está retrasado y el set de réplicas resultante tiene una configuración PSA, el primer cambio de configuración modificará el número de nodos necesarios para confirmar un cambio con "majority". En este caso, el punto de confirmación se retrasará hasta que el secundario haya alcanzado al primario.

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á añadiendo o modificando.

config

Documento

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

force

booleano

Opcional

ADVERTENCIA: Ejecutar el método rs.reconfigForPSASet() con force: true no es recomendable y puede causar que los guardados confirmados se reviertan.

Especifica true para forzar que los miembros disponibles del set de réplicas acepten la nueva configuración. Por defecto se establece en false.

La reconfiguración forzada puede provocar un comportamiento inesperado o indeseable, incluido el rollback de los "majority" commits confirmados.

maxTimeMS

entero

Opcional

Especifica un límite de tiempo acumulativo en milisegundos para el procesamiento de cada reconfiguración durante la operación rs.reconfigForPSASet(). Por defecto, rs.reconfigForPSASet() espera indefinidamente a que las configuraciones se propaguen a la mayoría de los miembros del conjunto de réplicas.

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

  1. El método vuelve a configurar tu set de réplicas para agregar o modificar un secundario 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 agrega el nuevo secundario al arreglo members. En esta configuración, el nuevo secundario se añade a las memberIndex 1. El memberIndex es el mismo que el índice de arreglo. Para ajustes adicionales, consulta ajustes de configuración del set 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