Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

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 arquitectura PSA para convertirlo en un nodo votante que almacene datos con un priority.diferente de cero.

  • 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, consulta 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 tiene la siguiente rs.reconfigForPSASet() 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 set de réplicas.

force

booleano

Opcional

ADVERTENCIA: No se recomienda ejecutar el método rs.reconfigForPSASet() con force: true y puede provocar que las escrituras confirmadas 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 procesar cada reconfiguración durante la rs.reconfigForPSASet() operación. Por defecto, 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 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 agregado o modificado se ha puesto al día con todas las escrituras confirmadas, el método reconfigura el secundario para que tenga elpriorityespecificado en el comandors.reconfigForPSASet()({ votes: 1, priority: <num> }).

El enfoque de dos pasos evita la posibilidad de revertir los guardados confirmados en caso de un traspaso al nuevo secundario antes de que el nuevo secundario tenga todos los guardados confirmados 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 agrega un nuevo servidor secundario al conjunto de réplicas. Las operaciones se ejecutan en el mongosh shell mientras se está conectado al servidor primario.

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 método rs.reconfigForPSASet() con memberIndex 1 y el cfg modificado.memberIndex es la posición del nuevo miembro en el members array. 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")
    }
    }