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.mongodEl, laconfigbase de datos muestra colecciones específicas del fragmento determinado, comomigrationCoordinatorsrangeDeletionso.
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 que no sean transacciones en la config.transactions colección con las siguientes inquietudes y opciones de lectura:
"majority"y la opción afterClusterTime está configuradaAl 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 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.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 del fragmento 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 8.0,
config.collectionssolo almacena metadatos para colecciones fragmentadas.config.collectionsSolo almacena metadatos sobre las colecciones, no sobre los documentos almacenados en las colecciones.Para una colección llamada
petsen larecordsbase de datos, un documento en la colección se parecería alcollectionssiguiente:{ "_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.csrs.indexesNuevo en la versión 7.0.
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
indexesalmacena un documento para cada índice global disponible en una partición.Cada documento de la colección contiene los siguientes campos:
CampoTipo de datoDescripciónnameString
Nombre del índice global.
keyPatternDocumento
Especificación de clave de índice.
optionsDocumento
Proporciona información sobre opciones de índice especificadas, incluyendo si el índice es un índice global.
lastmodMarca de tiempo
Marca de tiempo que proporciona información sobre cuándo se modificó el índice por última vez y la versión del índice.
collectionUUIDUUID
UUID de la colección particionada.
indexCollectionUUIDUUID
UUID de la colección secundaria que rastrea el índice global.
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 correspondiente muestra el nombre, el fragmento principal 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 devuelve esta
sh.status()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 colección almacena
mongosmongosun documento por cada instancia afiliada al clúster. El clúster mantiene esta colección para fines de generación de informes.Cada documento de la colección contiene estos
mongoscampos: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
Matriz de los
mongosnombres de dominio completos (FQDN) de.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.upNúmero largo
Número de segundos que ha estado activo desde el último
mongosping.waitingBooleano
Este campo siempre es
truey sólo se incluye por compatibilidad con versiones anteriores.El siguiente documento muestra el estado del que se
mongosejecutaexample.com:27017en.[ { _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, consulte Modificar el tamaño del rango en un clúster fragmentado. El
chunksizevalor especificado 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:
balancerStartTambién permite la división automática del clúster fragmentado.balancerStoptambién desactiva la división automática para el clúster fragmentado.Para habilitar o deshabilitar la función de división automática, utilice el
sh.enableAutoSplit()método osh.disableAutoSplit()el método correspondiente.
Documentos de ejemplo 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 el fragmento tiene zonas asignadas, este documento tiene un
tagscampo, 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.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 sesiones causalmente consistentes para instancias independientes, conjuntos de réplicas y clústeres fragmentados, y escrituras y transacciones que se pueden volver a intentar para conjuntos 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.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.