Las colecciones en la base de datos config admiten:
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:
mongosEn, laconfigbase de datos muestra colecciones ubicadas en los servidores de configuración, comocollectionschunkso.mongodEn, laconfigbase de datos muestra colecciones específicas para el fragmento dado, 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 de transacción en la colección con las siguientes consideraciones y opciones de config.transactions lectura:
"majority"y la opción afterClusterTime está establecidaAl usar un controlador de MongoDB y dentro de
"majority"una sesión causalmente consistente
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.
A partir de MongoDB 8.0, debe conectarse a mongos para leer algunas colecciones config. Para obtener la lista de estas colecciones, consulte Lecturas de colecciones de una sola partición.
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, conéctese mongosh a una instancia en un clúster fragmentado y ejecute 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
La modificación de la config base de datos en un sistema en funcionamiento puede provocar inestabilidad o conjuntos de datos inconsistentes. Si necesita 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 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 almacena un documento por cada cambio en los metadatos de una colección
changelogfragmentada.Ejemplo
El siguiente ejemplo muestra un único registro de un fragmento dividido de una
changelogcolección:{ "_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 de la colección contiene los siguientes
changelogcampos: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 almacena un documento para cada fragmento del clúster. El siguiente ejemplo muestra un
config.chunksdocumento:{ _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, obtenga el
uuididentificador de la colección. Luego,config.collectionsuseuuidpara obtener el documento correspondiente con el mismouuidde laconfig.chunkscolección.
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 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.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 almacena un documento para cada base de datos en el
databasesclú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 colección existe en cada fragmento
migrationCoordinatorsy almacena un documento para cada migración de fragmento en curso desde este fragmento a otro. La migración de fragmento falla si el documento no se puede escribir en la mayoría de los miembros del conjunto de réplicas del fragmento.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 para cada instancia afiliada al clúster. El clúster mantiene esta colección con 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
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.placementHistoryTip
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 existe en el servidor de configuración y registra qué fragmentos contenían datos para una base de datos o colección en momentos específicos del clúster. MongoDB utiliza esta información para reconstruir la ubicación histórica de los
placementHistorydatos.Para una colección llamada
myCollectionen latestbase de datos, un documento en la colección se parecería alplacementHistorysiguiente:{ _id: ObjectId("61e0a1f4e5b8c9d0a1b2c3d4"), nss: "test.myCollection", collUuid: UUID("07c63242-51b3-460c-865f-a67b3372d792"), timestamp: Timestamp(1626895826, 1), shards: [ "shardA", "shardB" ] } El campo
nsspuede contener un namespace o un nombre de base de datos. El campocollUuidsolo está presente para colecciones.
config.rangeDeletionsLa colección existe en cada fragmento y almacena un documento para cada rango de fragmentos que contiene documentos huérfanos. La migración de fragmentos falla si el documento no se puede escribir en la mayoría de los miembros del conjunto de réplicas del
rangeDeletionsfragmento.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 contiene la siguiente configuración de
settingsfragmentación: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 representa cada fragmento del clúster en un documento separado, como se muestra a
shardscontinuació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 contiene documentos para cada rango de
tagstagszona en el clúster. Los documentos en la colección se 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
versioncolección 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,
versiondb.getCollection()debe utilizar el método. 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 para una mongod mongos instancia o, conecte 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.