Las colecciones de la config Soporte de base de datos:
Sesiones causalmente consistentes para instancias independientes, conjuntos de réplicas y clústeres fragmentados, y escrituras que se pueden volver a intentar para conjuntos de réplicas y clústeres fragmentados.
Nota
Los clústeres fragmentados pueden mostrar diferentes colecciones en la config base de datos, dependiendo de si se conecta a mongos mongodo:
El
mongos, la base de datosconfigmuestra colecciones ubicadas en los servidores de configuración, comocollectionso.chunksmongodEl, laconfigbase de datos muestra colecciones específicas del fragmento determinado, comomigrationCoordinatorsrangeDeletionso.
Cuando un servidor de configuración y un fragmento están alojados en el mismo nodo, puede tener acceso a algunas colecciones locales del fragmento enmongos la config base de datos.
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 utilizar un controlador MongoDB y dentro de
"majority"una sesión causalmente consistente
Importante
El esquema de la config base de datos es interno y puede cambiar entre versiones de MongoDB. La config base de datos no es una API confiable, y los usuarios no deben escribir datos en la config base de datos durante el funcionamiento normal ni durante el mantenimiento.
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 respaldar operaciones de clúster fragmentado
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 listCollections la acción en la base de datos.
La base de datos de configuración es principalmente para uso interno, y durante las operaciones normales nunca se deben insertar ni almacenar datos manualmente. Sin embargo, si necesita verificar la disponibilidad de escritura del servidor de configuración para un clúster fragmentado, puede insertar un documento en una colección de prueba (tras asegurarse de que no exista ninguna 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 estará disponible para procesar escrituras.
Es posible que las futuras versiones del servidor incluyan diferentes colecciones en la base de datos de configuración, así que tenga cuidado al seleccionar un nombre para su colección de prueba.
MongoDB utiliza las siguientes colecciones en la base de datos config para admitir la fragmentación:
config.changelogTip
Metadatos internos de MongoDB
La colección almacena un documento por cada cambio en los metadatos de una colección
changelogfragmentada.Ejemplo
El siguiente ejemplo muestra un solo 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 cadena que contiene la dirección del cliente, una instancia que inicia este
mongoscambio.
config.changelog.timeUna marca de tiempo ISODate que refleja cuándo ocurrió el cambio.
config.chunksTip
Metadatos internos de MongoDB
La colección almacena un documento por 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 del fragmento del fragmento.shardes el nombre del fragmento que almacena el fragmento en el clúster.
Tip
Para encontrar los fragmentos de una colección, recupera el
uuididentificador de la colección. Luego,config.collectionsusauuidpara recuperar el documento coincidente con el mismouuidde laconfig.chunkscolección.
config.collectionsTip
Metadatos internos de MongoDB
A partir de MongoDB,8.0
config.collectionsalmacena metadatos para todas las colecciones fragmentadas y no fragmentadas movidasmoveCollectioncon.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 colección almacena un documento para cada índice global disponible en un
indexesfragmento.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, incluso 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 fragmentada.
indexCollectionUUIDUUID
UUID de la colección secundaria que rastrea el índice global.
config.databasesTip
Metadatos internos de MongoDB
La colección almacena un documento para cada base de datos del
databasesclú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 colección existe en cada fragmento
migrationCoordinatorsy almacena un documento por cada migración de fragmento en curso de este fragmento a otro. La migración de fragmentos falla si el documento no puede escribirse en la mayoría de los miembros del conjunto de réplicas del fragmento.Cuando se completa una migración, el documento que describe la migración se elimina de la colección.
config.mongosTip
Metadatos internos de MongoDB
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 de host y el puerto donde se ejecuta.
mongosEl_idtiene el<hostname>:<port>formato.advisoryHostFQDNsArreglo de cadenas
Matriz de los
mongosnombres de dominio completos (FQDN) de.createdfecha
Cuando se inició
mongosel.Nuevo en la versión 5.2.
mongoVersionString
Versión de MongoDB que está
mongosejecutando.pingfecha
mongosinstancias envían pings al servidor de configuración cada 30 segundos. Este campo indica la hora del último ping.upNúmero largo
Número de segundos que ha estado activo desde el último
mongosping.waitingBooleano
Este campo siempre es
truey solo 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 existe en cada fragmento y almacena un documento por cada rango de fragmentos que contiene documentos huérfanos. La migración de fragmentos falla si el documento no puede escribirse 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 colección contiene las siguientes configuraciones de
settingsfragmentación: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.Configuración del balanceador. Para cambiar la configuración del balanceador, incluido su estado, consulte Administrar el balanceador de 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 deshabilita 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 colección representa cada fragmento del clúster en un documento separado, como en el
shardssiguiente:{ "_id" : "shard0000", "host" : "localhost:30000", "state" : 1 } Si el fragmento es un conjunto de réplicas, el campo
hostmuestra el nombre del conjunto de réplicas, luego una barra y luego una lista separada por comas de los nombres de host de cada miembro del conjunto 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 colección contiene documentos para cada rango
tagstagsde zona del clúster. Los documentos de la colección son similares a los siguientes:{ "_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
versioncolección contiene el número de versión actual de los metadatos. Esta colección contiene solo un 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 modifique ni elimine estas colecciones manualmente.
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 miembros de la implementación.Cuando un usuario crea una sesión en una instancia o, el registro de la sesión existe inicialmente solo en la memoria de la instancia. Periódicamente, la instancia sincronizará sus sesiones en caché con
mongodmongoslasystem.sessionscolección; en ese momento, serán visibles para todos los miembros de la implementación.Para ver registros en la
system.sessionscolección,$listSessionsutilice.Advertencia
No modifique ni elimine manualmente la colección
system.sessions.En un clúster fragmentado, la colección
system.sessionsestá fragmentada.Al agregar un fragmento al clúster fragmentado, si el fragmento a agregar ya contiene su propia colección
system.sessions, MongoDB elimina la colecciónsystem.sessionsdel nuevo fragmento durante el proceso de adición.
config.transactionsLa
transactionscolección almacena registros utilizados para admitir escrituras y transacciones reintentables para conjuntos de réplicas y clústeres fragmentados.Advertencia
No modifique ni elimine manualmente la colección
transactions.