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
/ /
Referencia

Config Database

Las colecciones en el config soporte de bases de datos:

  • operaciones del clúster particionado, y

  • a partir de MongoDB 3.6, sesiones causalmente consistentes para autónomos, conjuntos de réplicas y clústeres, así como escrituras reintentables para conjuntos de réplicas y clústeres.

Nota

Los clústeres compartidos pueden mostrar diferentes colecciones en la base de datos config, dependiendo de si se conectan a mongos o a mongod:

Cuando un servidor de configuración y una partición se alojan en el mismo nodo, mongos puede tener acceso a algunas colecciones locales de la partición en la base de datos config.

A partir de MongoDB,5.0 no se permiten lecturas que no sean transacciones en la config.transactions colección con las siguientes inquietudes y opciones de lectura:

Importante

El esquema de la base de datos config es interno y puede cambiar entre versiones de MongoDB. La base de datos config no es una API confiable, y los usuarios no deben guardar datos en la base de datos config durante la operación o el mantenimiento normales.

Nota

No se pueden realizar operaciones de lectura/escritura en las colecciones de la base de datos config dentro de una Transacción multi-documento.

Para acceder a la config base de datos y ver la lista de colecciones que admiten operaciones de fragmentación, conecte mongosh a una instancia en un clúster fragmentado y emita lo mongos siguiente:

use config
show collections

Nota

Si se ejecuta con control de acceso, asegúrese de tener privilegios que otorguen la acción listCollections en la base de datos.

La base de datos de configuración es principalmente para uso interno y durante las operaciones normales nunca deberías insertar o almacenar datos manualmente en ella. Sin embargo, si necesitas verificar la disponibilidad de escritura del servidor de configuración para un clúster particionado, puedes insertar un documento en una colección de prueba (después de asegurarte de que no exista ya una colección con ese nombre):

Advertencia

Modificar la config base de datos en un sistema en funcionamiento puede provocar inestabilidad o conjuntos de datos incoherentes. Si debe modificar la config base de datos, utilice para crear una copia de seguridad completa de mongodump la config base de datos.

db.testConfigServerWriteAvail.insertOne( { a : 1 } )

Si la operación tiene éxito, el servidor de configuración está disponible para procesar guardados.

Las futuras versiones del servidor pueden incluir diferentes colecciones en la base de datos de configuración, así que tenga cuidado al seleccionar un nombre para su colección de pruebas.

MongoDB utiliza las siguientes colecciones en la base de datos config para admitir la fragmentación:

config.changelog

Tip

Metadatos internos de MongoDB

La base de datos de configuración es interna. Las aplicaciones y los administradores no deben modificar ni depender de su contenido durante la operación normal.

La colección changelog almacena un documento para cada modificación en los metadatos de una colección particionada.

Ejemplo

El siguiente ejemplo muestra un único registro de un fragmento dividido de una colección changelog:

{
"_id" : "<hostname>-<timestamp>-<increment>",
"server" : "<hostname><:port>",
"clientAddr" : "127.0.0.1:63381",
"time" : ISODate("2012-12-11T14:09:21.039Z"),
"what" : "split",
"ns" : "<database>.<collection>",
"details" : {
"before" : {
"min" : {
"<database>" : { $minKey : 1 }
},
"max" : {
"<database>" : { $maxKey : 1 }
},
"lastmod" : Timestamp(1000, 0),
"lastmodEpoch" : ObjectId("000000000000000000000000")
},
"left" : {
"min" : {
"<database>" : { $minKey : 1 }
},
"max" : {
"<database>" : "<value>"
},
"lastmod" : Timestamp(1000, 1),
"lastmodEpoch" : ObjectId(<...>)
},
"right" : {
"min" : {
"<database>" : "<value>"
},
"max" : {
"<database>" : { $maxKey : 1 }
},
"lastmod" : Timestamp(1000, 2),
"lastmodEpoch" : ObjectId("<...>")
},
"owningShard" : "<value>"
}
}

Cada documento en la colección changelog contiene los siguientes campos:

config.changelog._id

El valor de changelog._id es: <hostname>-<timestamp>-<increment>.

config.changelog.server

El nombre de host del servidor que contiene estos datos.

config.changelog.clientAddr

Una string que contiene la dirección del cliente, una instancia de mongos que inicia este cambio.

config.changelog.time

Una marca de tiempo ISODate que refleja cuándo ocurrió el cambio.

config.changelog.what

Refleja el tipo de cambio registrado. Los valores posibles incluyen:

  • dropCollection

  • dropCollection.start

  • dropDatabase

  • dropDatabase.start

  • moveChunk.start

  • moveChunk.commit

  • split

  • multi-split

config.changelog.ns

namespace donde se produjo el cambio.

config.changelog.details

Un documento que contiene detalles adicionales sobre el cambio. La estructura del documento details depende del tipo de cambio.

config.chunks

Tip

Metadatos internos de MongoDB

La base de datos de configuración es interna. Las aplicaciones y los administradores no deben modificar ni depender de su contenido durante la operación normal.

La colección chunks almacena un documento para cada fragmento en el clúster. Considera el siguiente ejemplo de un documento para un fragmento llamado mydb.foo-a_\"cat\":

{
"_id" : "mydb.foo-a_\"cat\"",
"lastmod" : Timestamp(2, 1),
"uuid": "c025d039-e626-435e-b2d2-c1d436038041",
"min" : {
"animal" : "cat"
},
"max" : {
"animal" : "dog"
},
"shard" : "shard0004",
"history" : [ { "validAfter" : Timestamp(1569368571, 27), "shard" : "shard0004" } ]
}

Estos documentos almacenan el rango de valores de la clave de fragmento que describe el fragmento en los campos min y max. Además, el campo shard identifica el fragmento del clúster que posee el fragmento.

config.collections

Tip

Metadatos internos de MongoDB

La base de datos de configuración es interna. Las aplicaciones y los administradores no deben modificar ni depender de su contenido durante la operación normal.

La colección collections almacena un documento para cada colección particionada en el clúster. Dada una colección llamada pets en la base de datos records, un documento en la colección collections se asemejaría a lo siguiente:

{
"_id" : "records.pets",
"lastmod" : ISODate("2021-07-21T15:48:15.193Z"),
"timestamp": Timestamp(1626882495, 1),
"key" : {
"a" : 1
},
"unique" : false,
"lastmodEpoch" : ObjectId("5078407bd58b175c5c225fdc"),
"uuid" : UUID("f8669e52-5c1b-4ea2-bbdc-a00189b341da")
}
config.databases

Tip

Metadatos internos de MongoDB

La base de datos de configuración es interna. Las aplicaciones y los administradores no deben modificar ni depender de su contenido durante la operación normal.

La colección databases almacena un documento para cada base de datos en el clúster.

Para cada base de datos, el documento correspondiente muestra el nombre, el fragmento principal de la base de datos, el estado de fragmentación habilitada de la base de datos y una versión.

{ "_id" : "test", "primary" : "shardA", "partitioned" : true, "version" : { "uuid" : UUID("516a5f79-5eb9-4844-8ee9-b8e9de91b760"), "timestamp" : Timestamp(1626894204, 1), "lastMod" : 1 } }
{ "_id" : "hr", "primary" : "shardA", "partitioned" : false, "version" : { "uuid" : UUID("8e39d61d-6259-4c33-a5ed-bcd2ae317b6f"), "timestamp" : Timestamp(1626895015, 1), "lastMod" : 1 } }
{ "_id" : "reporting", "primary" : "shardB", "partitioned" : false, "version" : { "uuid" : UUID("07c63242-51b3-460c-865f-a67b3372d792"), "timestamp" : Timestamp(1626895826, 1), "lastMod" : 1 } }

El método devuelve esta sh.status() información en la sección Bases de datos.

config.lockpings

Tip

Metadatos internos de MongoDB

La base de datos de configuración es interna. Las aplicaciones y los administradores no deben modificar ni depender de su contenido durante la operación normal.

La colección lockpings lleva un registro de los componentes activos en el clúster particionado. Dado un clúster con un mongos en ejecución en example.com:30000, el documento en la colección lockpings sería similar a:

{ "_id" : "example.com:30000:1350047994:16807", "ping" : ISODate("2012-10-12T18:32:54.892Z") }
config.locks

Tip

Metadatos internos de MongoDB

La base de datos de configuración es interna. Las aplicaciones y los administradores no deben modificar ni depender de su contenido durante la operación normal.

La colección locks almacena los bloqueos distribuidos. El primario del conjunto de réplicas del servidor de configuración toma un bloqueo al insertar un documento en la colección locks.

{
"_id" : "test.myShardedCollection",
"state" : 2,
"process" : "ConfigServer",
"ts" : ObjectId("5be0b9ede46e4f441a60d891"),
"when" : ISODate("2018-11-05T21:52:00.846Z"),
"who" : "ConfigServer:Balancer",
"why" : "Migrating chunk(s) in collection test.myShardedCollection"
}

A partir de la versión 3.4, el campo state siempre tendrá un valor de 2 para prevenir que cualquier instancia heredada de mongos realice la operación de balanceo. El campo when especifica el momento en que el nodo del servidor de configuración se convirtió en primario.

En la versión 3.4, cuando el balanceador está activo, este toma un bloqueo, como se muestra en el siguiente 3.4 ejemplo:

{
"_id" : "balancer",
"state" : 2,
"ts" : ObjectId("5be0bc6cb20effa83b15baa8"),
"who" : "ConfigServer:Balancer",
"process" : "ConfigServer",
"when" : ISODate("2018-11-05T21:56:13.096Z"),
"why" : "CSRS Balancer"
}

A partir de la versión 3.6, el equilibrador ya no toma un "bloqueo". Si has actualizado de 3.4 a 3.6, puedes optar por eliminar cualquier documento residual "_id" : "balancer".

config.migrationCoordinators

La migrationCoordinators colección se encuentra en cada partición y almacena un documento para cada fragmento en proceso de migración desde esta partición a otra partición. La migración del fragmento falla si el documento no puede ser escrito en la mayoría de los miembros del set de réplicas de la partición.

Cuando una migración se completa, el documento que describe la migración se elimina de la colección.

config.mongos

Tip

Metadatos internos de MongoDB

La base de datos de configuración es interna. Las aplicaciones y los administradores no deben modificar ni depender de su contenido durante la operación normal.

La colección mongos almacena un documento para cada mongos instancia afiliada al clúster. Las instancias mongos envían pings a todos los nodos del clúster cada 30 segundos para que el clúster pueda verificar que la mongos está activa. El campo ping muestra la hora del último ping, mientras que el campo up informa el tiempo de actividad del mongos desde el último ping. El clúster mantiene esta colección con fines de reporte.

El siguiente documento muestra el estado del que se mongos ejecuta example.com:27017 en.

{
"_id" : "example.com:27017",
"advisoryHostFQDNs" : [
"example.com"
],
"mongoVersion" : "4.2.0",
"ping" : ISODate("2019-09-25T19:26:52.360Z"),
"up" : NumberLong(50),
"waiting" : true
}
config.rangeDeletions

La colección rangeDeletions existe en cada partición y almacena un documento para cada rango de segmentos que contiene documentos huérfanos. La migración del fragmento falla si el documento no puede ser escrito en la mayoría de los miembros del set de réplicas de la partición.

Cuando se limpia el rango de fragmentos huérfanos, el documento que describe el rango se elimina de la colección.

config.settings

Tip

Metadatos internos de MongoDB

La base de datos de configuración es interna. Las aplicaciones y los administradores no deben modificar ni depender de su contenido durante la operación normal.

La colección settings contiene las siguientes configuraciones de particionado:

Los siguientes son algunos documentos de ejemplo en la colección settings:

{ "_id" : "chunksize", "value" : 64 }
{ "_id" : "balancer", "mode" : "full", "stopped" : false }
{ "_id" : "autosplit", "enabled" : true }
config.shards

Tip

Metadatos internos de MongoDB

La base de datos de configuración es interna. Las aplicaciones y los administradores no deben modificar ni depender de su contenido durante la operación normal.

La colección shards representa cada partición en el clúster en un documento separado, como se muestra a continuación:

{ "_id" : "shard0000", "host" : "localhost:30000", "state" : 1 }

Si la partición es un set de réplicas, el campo host muestra el nombre del set de réplicas, luego una barra diagonal, luego una lista separada por comas de los nombres de host de cada nodo del set de réplicas, como en el siguiente ejemplo:

{ "_id" : "shard0001", "host" : "shard0001/localhost:27018,localhost:27019,localhost:27020", "state" : 1 }

Si el fragmento tiene zonas asignadas, este documento tiene un tags campo, que contiene una matriz de las zonas a las que está asignado, como en el siguiente ejemplo:

{ "_id" : "shard0002", "host" : "localhost:30002", "state" : 1, "tags": [ "NYC" ] }
config.tags

Tip

Metadatos internos de MongoDB

La base de datos de configuración es interna. Las aplicaciones y los administradores no deben modificar ni depender de su contenido durante la operación normal.

La colección tags contiene documentos para cada rango de zona en el clúster. Los documentos en la colección tags se asemejan a lo siguiente:

{
"_id" : { "ns" : "records.users", "min" : { "zipcode" : "10001" } },
"ns" : "records.users",
"min" : { "zipcode" : "10001" },
"max" : { "zipcode" : "10281" },
"tag" : "NYC"
}
config.version

Tip

Metadatos internos de MongoDB

La base de datos de configuración es interna. Las aplicaciones y los administradores no deben modificar ni depender de su contenido durante la operación normal.

La colección version contiene el número de versión actual de los metadatos. Esta colección contiene un solo documento. Por ejemplo:

{ "_id" : 1, "minCompatibleVersion" : 5, "currentVersion" : 6, "clusterId" : ObjectId("5d8bc01a690d8abbd2014ddd") }

Para acceder a la colección version, debe utilizar el método db.getCollection(). Por ejemplo, para recuperar el documento de la colección:

db.getCollection("version").find()

Novedades en la versión 3.6.

A partir de MongoDB 3.6, la base de datos config contiene las colecciones internas para admitir sesiones causalmente consistentes para autónomos, sets de réplicas y clústeres fragmentados, así como escrituras reintentables y transacciones para sets de réplicas y clústeres fragmentados.

Advertencia

No modifiques manualmente ni descartes estas colecciones.

Para acceder a estas colecciones desde una mongod o una mongos instancia, conecta mongosh a la instancia.

config.system.sessions

La colección system.sessions almacena registros de sesión que están disponibles para todos los nodos de la implementación.

Cuando un usuario crea una sesión en una mongod o mongos, el registro de la sesión existe inicialmente solo en la memoria de la instancia. Periódicamente, la instancia sincronizará sus sesiones almacenadas en caché con la colección system.sessions; en ese momento, serán visibles para todos los miembros de la implementación.

Para ver registros en la colección system.sessions, utiliza $listSessions.

Advertencia

No modifique manualmente ni elimine la colección system.sessions.

En un clúster particionado, la system.sessions colección está particionada.

  • Al añadir una partición al clúster, si la partición a añadir ya contiene su propia colección system.sessions, MongoDB descarta la colección system.sessions de la nueva partición durante el proceso de adición.

  • A partir de la versión 4.4 (y 4.2.7), MongoDB divide automáticamente la colección system.sessions en al menos 1024 fragmentos y distribuye los fragmentos uniformemente entre las particiones del clúster.

config.transactions

La colección transactions almacena registros utilizados para respaldar escrituras reintentables y transacciones para sets de réplicas y clústeres.

Advertencia

No modifique manualmente ni elimine la colección transactions.

Volver

Solucionar problemas de clústeres fragmentados

En esta página