Las colecciones en el config soporte de bases de datos:
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 datosconfigmuestra colecciones ubicadas en los servidores de configuración, comocollectionsochunks.El
mongod, la base de datosconfigmuestra colecciones específicas para la partición dado, comomigrationCoordinatorsorangeDeletions.
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.
Restricciones
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:
"majority"y la opción afterClusterTime está establecidaAl usar un MongoDB driver y un
"majority"dentro de una sesión causalmente coherente
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.
Colecciones para admitir operaciones de clústeres segmentados
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.changelogTip
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
changelogalmacena 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
changelogcontiene los siguientes campos:config.changelog.clientAddrUna string que contiene la dirección del cliente, una instancia de
mongosque inicia este cambio.
config.changelog.timeUna marca de tiempo ISODate que refleja cuándo ocurrió el cambio.
config.chunksTip
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.chunksalmacena 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:
_ides el identificador del fragmento.minymaxson el rango de valores para la clave de partición del fragmento.shardes 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
uuidde la colección deconfig.collections. Luego, utilizauuidpara recuperar el documento coincidente con el mismouuidde la colecciónconfig.chunks.
config.collectionsTip
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.collectionsalmacena metadatos para todas las colecciones fragmentadas y para las colecciones no fragmentadas trasladadas conmoveCollection.En versiones de MongoDB anteriores a la 8.0,
config.collectionssolo almacena metadatos de colecciones particionadas.config.collectionssolo almacena metadatos sobre colecciones, no los documentos almacenados en las colecciones.Para una colección llamada
petsen la base de datosrecords, un documento en la coleccióncollectionsserí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.databasesTip
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
databasesalmacena 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.migrationCoordinatorsLa
migrationCoordinatorscolecció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.mongosTip
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
mongoscolección almacena un documento para cada instancia demongosafiliada con el clúster. El clúster mantiene esta colección para fines de reportes.Cada documento en la
mongoscolección contiene estos campos:CampoTipo de datoDescripción_idString
El nombre del host y el puerto donde se ejecuta el
mongos. El_idtiene el formato<hostname>:<port>.advisoryHostFQDNsArreglo de cadenas
Arreglo de los nombres de dominio totalmente calificados (FQDN) de
mongos.createdfecha
Cuando se inició el
mongos.Nuevo en la versión 5.2.
mongoVersionString
Versión de MongoDB en la que se ejecuta el
mongos.pingfecha
Las instancias
mongosenvían pings al servidor de configuración cada 30 segundos. Este campo indica la última vez que se realizó el ping.upNumberLong
Número de segundos que el
mongosha estado activo desde el último ping.waitingBooleano
Este campo siempre es
truey sólo se incluye por compatibilidad con versiones anteriores.El siguiente documento muestra el estado de la
mongosen ejecución enexample.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.rangeDeletionsLa colección
rangeDeletionsexiste 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.settingsTip
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
settingscontiene 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
chunksizeestá 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:
balancerStarttambién habilita la división automática para el clúster particionado.balancerStoptambién desactiva la división automática para el clúster fragmentado.Para activar o desactivar la bandera de autospliteo, usa el método
sh.enableAutoSplit()correspondiente o el métodosh.disableAutoSplit().
Ejemplo de documentos en la colección
settings:{ "_id" : "chunksize", "value" : 64 } { "_id" : "balancer", "mode" : "full", "stopped" : false }
config.shardsTip
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
shardsrepresenta 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
hostmuestra 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.tagsTip
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
tagscontiene documentos para cada rango de zona en el clúster. Los documentos en la coleccióntagsse asemejan a lo siguiente:{ "_id" : { "ns" : "records.users", "min" : { "zipcode" : "10001" } }, "ns" : "records.users", "min" : { "zipcode" : "10001" }, "max" : { "zipcode" : "10281" }, "tag" : "NYC" }
config.versionTip
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
versioncontiene 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étododb.getCollection(). Por ejemplo, para recuperar el documento de la colección:db.getCollection("version").find()
Colecciones para apoyar sesiones
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.sessionsLa colección
system.sessionsalmacena 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
mongodomongos, 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ónsystem.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.sessionscolecció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ónsystem.sessionsde la nueva partición durante el proceso de adición.
config.transactionsLa colección
transactionsalmacena 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.