Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Config Database

Las colecciones en el config soporte de bases de datos:

  • Operaciones del clúster fragmentado

  • Sesiones causalmente coherentes para autónomos, sets de réplicas y clústeres fragmentados y escrituras reintentables para sets de réplicas y clústeres fragmentados.

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:

  • En mongos, la base de datos config muestra colecciones ubicadas en los servidores de configuración, como collections o chunks.

  • El mongod, la base de datos config muestra colecciones específicas para la partición dado, como migrationCoordinators o rangeDeletions.

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 no transaccionales en la colección config.transactions con los siguientes niveles de consistencia de lectura y opciones:

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 base de datos config y ver la lista de colecciones que admiten operaciones de partición, conecta mongosh a una instancia mongos en un clúster particionado y emite lo 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

La modificación de la base de datos config en un sistema en funcionamiento puede provocar inestabilidad o conjuntos de datos inconsistentes. Si debe modificar la base de datos config, use mongodump para crear una copia de seguridad completa de la base de datos config.

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 usa las siguientes colecciones en la base de datos config para admitir el particionado:

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

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 details documento 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 config.chunks almacena un documento para cada fragmento en el clúster. El siguiente ejemplo muestra un documento:

{
_id: ObjectId('65a954c0de11596e08e7c1dc'),
uuid: UUID('a4479215-a38d-478f-a82b-e5e95d455e55'),
min: { a: Long('121204345') },
max: { a: Long('993849349') },
shard: 'shard01',
lastmod: Timestamp({ t: 1, i: 0 }),
history: [
{
validAfter: Timestamp({ t: 1705596095, i: 14 }),
shard: 'shard01'
}
]
}

En el documento:

  • _id es el identificador del fragmento.

  • min y max son el rango de valores para la clave de partición del fragmento.

  • shard es el nombre de la partición que almacena el fragmento en el clúster.

Tip

Para encontrar los fragmentos en una colección, recupera el identificador uuid de la colección de config.collections. Luego, utiliza uuid para recuperar el documento coincidente con el mismo uuid de la colección config.chunks.

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.

A partir de MongoDB 8.0, config.collections almacena metadatos para todas las colecciones fragmentadas y para las colecciones no fragmentadas trasladadas con moveCollection.

En versiones de MongoDB anteriores a la 8.0, config.collections solo almacena metadatos de colecciones particionadas.

config.collections solo almacena metadatos sobre colecciones, no los documentos almacenados en las colecciones.

Para una colección llamada pets en la base de datos records, un documento en la colección collections sería similar 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 adecuado muestra el nombre, la partición primaria de la base de datos y una versión.

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

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

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 mongos colección almacena un documento para cada instancia de mongos afiliada con el clúster. El clúster mantiene esta colección para fines de reportes.

Cada documento en la mongos colección contiene estos campos:

Campo
Tipo de dato
Descripción

_id

String

El nombre del host y el puerto donde se ejecuta el mongos. El _id tiene el formato <hostname>:<port>.

advisoryHostFQDNs

Arreglo de cadenas

Arreglo de los nombres de dominio totalmente calificados (FQDN) de mongos.

created

fecha

Cuando se inició el mongos.

Nuevo en la versión 5.2.

mongoVersion

String

Versión de MongoDB en la que se ejecuta el mongos.

ping

fecha

Las instancias mongos envían pings al servidor de configuración cada 30 segundos. Este campo indica la última vez que se realizó el ping.

up

NumberLong

Número de segundos que el mongos ha estado activo desde el último ping.

waiting

Booleano

Este campo siempre es true y sólo se incluye por compatibilidad con versiones anteriores.

El siguiente documento muestra el estado de la mongos en ejecución en example.com:27017.

[
{
_id: 'example.com:27017',
advisoryHostFQDNs: [ "example.com" ],
created: ISODate("2021-11-22T16:32:13.708Z"),
mongoVersion: "5.2.0",
ping: ISODate("2021-12-15T22:09:23.161Z"),
up: Long("2007429"),
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:

  • Tamaño del rango. Para cambiar el tamaño del rango, consulta Modificar el tamaño del rango en un clúster particionado. El valor especificado de chunksize está en megabytes.

  • Ajustes del balanceador. Para cambiar la configuración del balanceador, incluido el estado del balanceador, consulta Administrar el balanceador del clúster fragmentado.

  • Autosplit:

    A partir de MongoDB 6.0.3, no se realiza la división automática de fragmentos. Esto se debe a las mejoras en la política de balanceo. Los comandos de división automática aún existen, pero no ejecutan ninguna operación.

    En versiones de MongoDB anteriores a 6.1:

Ejemplo de documentos en la colección settings:

{ "_id" : "chunksize", "value" : 64 }
{ "_id" : "balancer", "mode" : "full", "stopped" : false }
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 la partición tiene zonas asignadas, este documento tiene un campo tags, que contiene un arreglo 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()

La config base de datos contiene las colecciones internas para soportar las sesiones causalmente consistentes para autónomos, sets de réplicas y clústeres y escrituras reintentables y transacciones para sets de réplicas y clústeres.

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.

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

Referencia

En esta página