Las colecciones de la config Soporte de base de datos:
a partir de 3.6 MongoDB, sesiones causalmente consistentes para instancias independientes, conjuntos de réplicas y clústeres fragmentados, y escrituras reintentables 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:
mongosEl, laconfigbase de datos muestra colecciones ubicadas en los servidores de configuración, comocollectionschunkso.mongodEl, 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 para cada fragmento del clúster. Considere el siguiente ejemplo de un documento para un
chunksfragmentomydb.foo-a_\"cat\"llamado:{ "_id" : "mydb.foo-a_\"cat\"", "lastmod" : Timestamp(2, 1), "uuid": "c025d039-e626-435e-b2d2-c1d436038041", "min" : { "animal" : "cat" }, "max" : { "animal" : "dog" }, "shard" : "shard0004", "history" : [ { "validAfter" : Timestamp(1569368571, 27), "shard" : "shard0004" } ] } Estos documentos almacenan el rango de valores de la clave de fragmento que describe el fragmento en los campos
minymax. Además, el camposhardidentifica el fragmento del clúster que posee el fragmento.
config.collectionsTip
Metadatos internos de MongoDB
La colección almacena un documento por cada colección fragmentada del clúster. Dada una colección
collectionsllamadapetsen larecordsbase de datos, un documento en la colección se veríacollectionsasí:{ "_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 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, el estado de fragmentación habilitada de la base de datos y una versión.
{ "_id" : "test", "primary" : "shardA", "partitioned" : true, "version" : { "uuid" : UUID("516a5f79-5eb9-4844-8ee9-b8e9de91b760"), "timestamp" : Timestamp(1626894204, 1), "lastMod" : 1 } } { "_id" : "hr", "primary" : "shardA", "partitioned" : false, "version" : { "uuid" : UUID("8e39d61d-6259-4c33-a5ed-bcd2ae317b6f"), "timestamp" : Timestamp(1626895015, 1), "lastMod" : 1 } } { "_id" : "reporting", "primary" : "shardB", "partitioned" : false, "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.lockpingsTip
Metadatos internos de MongoDB
La colección
lockpingsrealiza un seguimiento de los componentes activos en el clúster fragmentado. Dado un clúster con unmongosejecutándose enexample.com:30000, el documento de la colecciónlockpingssería similar a:{ "_id" : "example.com:30000:1350047994:16807", "ping" : ISODate("2012-10-12T18:32:54.892Z") }
config.locksTip
Metadatos internos de MongoDB
La colección
locksalmacena los bloqueos distribuidos. El primario del conjunto de réplicas del servidor de configuración toma un bloqueo al insertar un documento en la colecciónlocks.{ "_id" : "test.myShardedCollection", "state" : 2, "process" : "ConfigServer", "ts" : ObjectId("5be0b9ede46e4f441a60d891"), "when" : ISODate("2018-11-05T21:52:00.846Z"), "who" : "ConfigServer:Balancer", "why" : "Migrating chunk(s) in collection test.myShardedCollection" } A partir de la 3.4 versión, el
statecampo siempre tendrá el valor2para evitar que las instancias heredadas realicen la operación de balanceo.mongosElwhencampo especifica el momento en que el miembro del servidor de configuración se convirtió en el principal.En la versión 3.4, cuando el balanceador está activo, éste toma un bloqueo, como en el siguiente ejemplo 3.4:
{ "_id" : "balancer", "state" : 2, "ts" : ObjectId("5be0bc6cb20effa83b15baa8"), "who" : "ConfigServer:Balancer", "process" : "ConfigServer", "when" : ISODate("2018-11-05T21:56:13.096Z"), "why" : "CSRS Balancer" } A partir de la versión 3.6, el balanceador ya no se bloquea. Si ha actualizado de la 3.4 a la 3.6, puede eliminar cualquier documento
"_id" : "balancer"restante.
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
mongosalmacena un documento por cada instanciamongosafiliada al clúster. Las instanciasmongosenvían pings a todos los miembros del clúster cada 30 segundos para que el clúster pueda verificar que la instanciamongosesté activa. El campopingmuestra la hora del último ping, mientras que el campoupinforma sobre el tiempo de actividad de la instanciamongosa partir del último ping. El clúster mantiene esta colección para fines de informes.El siguiente documento muestra el estado del que se
mongosejecutaexample.com:27017en.{ "_id" : "example.com:27017", "advisoryHostFQDNs" : [ "example.com" ], "mongoVersion" : "4.2.0", "ping" : ISODate("2019-09-25T19:26:52.360Z"), "up" : NumberLong(50), "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 fragmento. Para cambiar el tamaño del fragmento, consulte Modificar el tamaño del fragmento 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.
Comenzando en MongoDB 4.2:
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.
División automática. Para habilitar o deshabilitar la división automática, utilice el
sh.enableAutoSplit()método osh.disableAutoSplit()el método correspondiente.Comenzando en MongoDB 4.2:
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.
Los siguientes son algunos documentos de ejemplo en la colección
settings:{ "_id" : "chunksize", "value" : 64 } { "_id" : "balancer", "mode" : "full", "stopped" : false } { "_id" : "autosplit", "enabled" : true }
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
Nuevo en la versión 3.6.
A partir de MongoDB,3.6 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 reintentables 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.A partir de la versión 4.4 (y 4.2.7), MongoDB divide automáticamente la colección
system.sessionsen al menos 1024 fragmentos y distribuye los fragmentos de manera uniforme entre los fragmentos del clúster.
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.