Docs Menu
Docs Home
/ /

Configurar conjuntos de etiquetas de set de réplicas

Se puede configurar uno o más miembros del conjunto de réplicas con tags:

{ "<tag1>": "<string1>", "<tag2>": "<string2>",... }

Para las operaciones de lectura, puede especificar un conjunto de etiquetas en las preferencias de lectura para ayudar a dirigir las operaciones de lectura a los miembros que tienen etiquetas específicas.

Para las operaciones de escritura, puede utilizar las etiquetas para crear una preocupación de escritura personalizada.

Si uno o más miembros del conjunto de réplicas están asociados con, puede tags especificar un conjunto de etiquetas en la preferencia de lectura para identificar a esos miembros. Un conjunto de etiquetas es una matriz de documentos, donde cada documento contiene los pares de etiqueta y valor. Las especificaciones se prueban en orden hasta encontrar una coincidencia. Una vez encontrada, esa especificación se utiliza para encontrar todos los miembros coincidentes que cumplen los requisitos.

Nota

No se puede especificar un conjunto de etiquetas al especificar el modo de preferencia de primary lectura.

Por ejemplo, un conjunto de réplicas tiene la siguiente configuración de conjunto de réplicas (algunos de los campos se han omitido para mayor brevedad):

{
"_id" : "rs0",
"version" : 1,
"protocolVersion" : Long(1),
"writeConcernMajorityJournalDefault" : true,
"members" : [
{ "_id" : 0, "host" : "mongodb0.example.net:27017", ..., "tags": { }, ... },
{ "_id" : 1, "host" : "mongodb1.example.net:27017", ..., "tags": { }, ... },
{ "_id" : 2, "host" : "mongodb2.example.net:27017", ..., "tags": { }, ... }
],
"settings" : {
...
}
}
  1. Añadir etiquetas a los miembros.

    Conectar al conjuntomongosh de réplicas y use para agregar etiquetas a los miembros:rs.reconfig()

    conf = rs.conf();
    conf.members[0].tags = { "dc": "east", "usage": "production" };
    conf.members[1].tags = { "dc": "east", "usage": "reporting" };
    conf.members[2].tags = { "dc": "west", "usage": "production" };
    rs.reconfig(conf);
  2. Verificar la configuración del conjunto de réplicas.

    Ejecute para verificar la configuración del conjunto de rs.conf() rs.conf() réplicas (se han omitido algunos campos para abreviar). devuelve un documento similar al siguiente:

    {
    "_id" : "rs0",
    "version" : 2,
    "protocolVersion" : Long(1),
    "writeConcernMajorityJournalDefault" : true,
    "members" : [
    {
    "_id" : 0,
    "host" : "mongodb0.example.net:27017",
    ...
    "tags" : {
    "dc": "east",
    "usage": "production"
    },
    ...
    },
    {
    "_id" : 1,
    "host" : "mongodb1.example.net:27017",
    ...
    "tags" : {
    "dc": "east",
    "usage": "reporting"
    },
    ...
    },
    {
    "_id" : 2,
    "host" : "mongodb2.example.net:27017",
    ...
    "tags" : {
    "dc": "west",
    "usage": "production"
    },
    ...
    }
    ],
    "settings" : {
    ...
    }
    }
  3. Especifique conjuntos de etiquetas en la preferencia de lectura.

    Para dirigir las operaciones de lectura a los secundarios etiquetados con una o más etiquetas específicas, en el mongo shell conectado al conjunto de réplicas, puede usar el método para readPref() especificar el modo de preferencia de lectura y el conjunto de etiquetas. Por ejemplo:

    • Para dirigir las operaciones de lectura al secundario etiquetado con "dc": "east" "usage": "production"y, incluya el siguiente conjunto de etiquetas:

      db.collection.find({}).readPref( "secondary", [ { "dc": "east", "usage": "production" } ] )
    • Para dirigir una operación de lectura a los secundarios etiquetados con "dc": "east" y, si no se encuentran, a los secundarios etiquetados con "usage": "production", incluya el siguiente conjunto de etiquetas:

      db.collection.find({}).readPref( "secondary", [ { "dc": "east"}, { "usage": "production" } ] )

    Tip

Si uno o más miembros del conjunto de réplicas están asociados tags con, puede configurar la opción del conjunto de réplicas settings.getLastErrorModes para crear una inquietud de escritura personalizada.

Dado un conjunto de réplicas de cinco miembros con miembros en dos centros de datos:

  1. una instalación VA etiquetada dc_va

  2. una instalación CA etiquetada dc_ca

{
"_id" : "rs0",
"version" : 1,
"protocolVersion" : Long(1),
"writeConcernMajorityJournalDefault" : true,
"members" : [
{ "_id" : 0, "host" : "mongodb0.example.net:27017", ..., "tags": { }, ... },
{ "_id" : 1, "host" : "mongodb1.example.net:27017", ..., "tags": { }, ... },
{ "_id" : 2, "host" : "mongodb2.example.net:27017", ..., "tags": { }, ... }
{ "_id" : 3, "host" : "mongodb3.example.net:27017", ..., "tags": { }, ... }
{ "_id" : 4, "host" : "mongodb4.example.net:27017", ..., "tags": { }, ... }
],
"settings" : {
...
}
}
  1. Agregue etiquetas a los miembros del conjunto de réplicas.

    Conecte al mongosh rs.reconfig() conjunto de réplicas y use para agregar etiquetas a los miembros:

    conf = rs.conf();
    conf.members[0].tags = { "dc_va": "rack1"};
    conf.members[1].tags = { "dc_va": "rack2"};
    conf.members[2].tags = { "dc_ca": "rack1"};
    conf.members[3].tags = { "dc_ca": "rack2"};
    conf.members[4].tags = { "dc_va": "rack1"};
    rs.reconfig(conf);
  2. Cree un problema de escritura personalizado.

    En la configuración del conjunto de réplicas, defina una preocupación de escritura personalizada en la settings.getLastErrorModes configuración. Por ejemplo, a continuación se define la preocupación de escritura MultipleDC personalizada, que requiere que la escritura se propague a dos miembros con diferentes dc_va valores de etiqueta y a un miembro con cualquier dc_ca valor de etiqueta.

    conf = rs.conf();
    conf.settings = { getLastErrorModes: { MultipleDC : { "dc_va": 2, "dc_ca": 1 } } };
    rs.reconfig(conf);

    Nota

    La solicitud de escritura MultipleDC no se satisface si la escritura se propaga a dos miembros con la misma etiqueta "dc_va". Por ejemplo, si la escritura solo se ha propagado a members[0] y members[4], "dc_va": 2 no se satisface, ya que tienen el mismo valor de etiqueta "rack1".

  3. Utilice la preocupación de escritura personalizada.

    Para utilizar la preocupación de escritura personalizada, pase el nombre de la w preocupación de escritura a la opción en la preocupación de escritura:

    db.collection.insertOne(
    { id: "xyz", status: "A" },
    { writeConcern: { w: "MultipleDC", j: true } }
    )

Volver

Resincronizar un miembro de un conjunto de réplicas

En esta página