As collections no suporte do banco de dados config:
Sessões consistentes em termos de causa para standalones, conjuntos de réplicas e clusters fragmentados e gravações com possibilidade de nova tentativa para conjuntos de réplicas e clusters fragmentados.
Observação
Clusters fragmentados podem mostrar collection diferentes no reconhecimento de data center config , dependendo se você se conecta a mongos ou mongod:
mongosNo, oconfigbanco de dados do mostra collections localizadas nos servidores de configuração, comocollectionschunksou.mongodNo, oconfigbanco de dados do mostra collections específicas para o shard fornecido, comomigrationCoordinatorsrangeDeletionsou.
Quando um servidor de configuração e um fragmento são hospedados no mesmo nó, mongos pode ter acesso a algumas collection locais do fragmento no reconhecimento de data center config .
Restrições
A partir do MongoDB,5.0 leituras que não de transação não são permitidas na collection com as seguintes opções e read config.transactions concerns:
"majority"e a opção afterClusterTime está definidaAo usar um driver MongoDB e em
"majority"uma sessão causalmente consistente
Importante
O esquema do banco de dados do config é interno e pode mudar entre versões do MongoDB. O banco de dados config não é uma API confiável, e os usuários não devem gravar dados no banco de dados config durante a operação ou manutenção normal.
Observação
Não é possível executar operações de leitura/gravação nas collections do banco de dados config em uma transação de vários documentos.
Collections para dar suporte a operações de cluster fragmentado
Para config acessar o banco de dados do e visualizar a lista de collections que suportam operações de sharding, conecte o mongosh mongos a uma instância do em um cluster fragmentado e emita o seguinte:
use config show collections
Observação
Se estiver executando com controle de acesso, certifique-se de ter privilégios que concedam a ação listCollections no banco de dados.
O banco de dados de configuração é principalmente para uso interno e, durante operações normais, você nunca deve inserir ou armazenar dados manualmente nele. No entanto, se você precisar verificar a disponibilidade de gravação do servidor de configuração para um cluster fragmentado, poderá inserir um documento em uma collection de teste (depois de verificar se nenhuma collection desse nome já existe):
Aviso
A modificação do config banco de dados do em um sistema funcional pode levar à instabilidade ou conjuntos de dados inconsistentes. Se você deve modificar o config banco de dados do, utilize mongodump o para criar uma cópia de segurança completa do config banco de dados do.
db.testConfigServerWriteAvail.insertOne( { a : 1 } )
Se a operação for bem-sucedida, o servidor de configuração estará disponível para processar gravações.
Versões futuras do servidor podem incluir collections diferentes no banco de dados de configuração, portanto, tenha cuidado ao selecionar um nome para sua collection de teste.
O MongoDB utiliza as seguintes collections no banco de dados do config para suportar a fragmentação:
config.changelogDica
Metadados MongoDB internos
O banco de dados de configuração é interno. Aplicativos e administradores não devem modificar ou depender de seu conteúdo durante a operação normal.
A collection armazena um documento para cada alteração nos metadados de uma collection
changelogfragmentada.Exemplo
O exemplo a seguir exibe um único registro de uma divisão de chunk de uma
changelogcollection:{ "_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 na coleção contém os seguintes
changelogcampos:config.changelog.clientAddrUma cadeia de caracteres que contém o endereço do cliente, uma instância
mongosque inicia essa alteração.
config.changelog.timeUm carimbo de data/hora ISODate que reflete quando a alteração ocorreu.
config.chunksDica
Metadados MongoDB internos
O banco de dados de configuração é interno. Aplicativos e administradores não devem modificar ou depender de seu conteúdo durante a operação normal.
A collection armazena um documento para cada chunk no cluster. O exemplo a seguir mostra um
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' } ] } No documento:
_idé o identificador de parte.minemaxsão os intervalos de valores das chaves de fragmento da parte.shardé o nome do fragmento que armazena a parte no cluster.
Dica
Para localizar os blocos em uma collection, recupere o
uuididentificador da collection a partir daconfig.collectionscollection. Em seguida, useuuidpara recuperar o documento correspondente com o mesmouuiddaconfig.chunkscollection.
config.collectionsDica
Metadados MongoDB internos
O banco de dados de configuração é interno. Aplicativos e administradores não devem modificar ou depender de seu conteúdo durante a operação normal.
A collection armazena um documento para cada collection fragmentada no cluster. Considerando uma collection
collectionschamadapetsnorecordsbanco de dados, um documento na collection seria semelhante aocollectionsseguinte:{ "_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.indexesNovidades na versão 7.0.
Dica
Metadados MongoDB internos
O banco de dados de configuração é interno. Aplicativos e administradores não devem modificar ou depender de seu conteúdo durante a operação normal.
A collection armazena um documento para cada índice global disponível em um
indexesshard.Cada documento na collection contém os seguintes campos:
CampoTipo de DadosDescriçãonameString
Nome do índice global.
keyPatternDocumento
Especificação da chave de índice.
optionsDocumento
Fornece informações sobre as opções de índice especificadas, incluindo se o índice é um índice global.
lastmodTimestamp
Registro de data/hora que fornece informações sobre quando o índice foi modificado pela última vez e a versão do índice.
collectionUUIDUUID
UUID da coleção fragmentada.
indexCollectionUUIDUUID
UUID da coleção secundária que rastreia o índice global.
config.databasesDica
Metadados MongoDB internos
O banco de dados de configuração é interno. Aplicativos e administradores não devem modificar ou depender de seu conteúdo durante a operação normal.
A collection armazena um documento para cada banco de dados no
databasescluster.Para cada banco de dados, o documento correspondente exibe o nome, o primary shard do banco de dados, o status habilitado de fragmentação do banco de dados e uma versão.
{ "_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 } } O método
sh.status()retorna essas informações na seção Bancos de dados .
config.migrationCoordinatorsA collection existe em cada shard
migrationCoordinatorse armazena um documento para cada migração de chunk em andamento deste shard para outro shard. A migração de chunk falha se o documento não puder ser gravado para a maioria dos membros do conjunto de réplica do shard.Quando uma migração é concluída, o documento que descreve a migração é excluído da collection.
config.mongosDica
Metadados MongoDB internos
O banco de dados de configuração é interno. Aplicativos e administradores não devem modificar ou depender de seu conteúdo durante a operação normal.
A coleção armazena
mongosmongosum documento para cada instância afiliada ao cluster. O cluster mantém essa coleção para fins de relatório.Cada documento na coleção contém estes
mongoscampos:CampoTipo de DadosDescrição_idString
O nome do host e a porta onde o
mongosestá sendo executado. O_idestá formatado como<hostname>:<port>.advisoryHostFQDNsArray de strings
Array dos FQDNs (Fully Qualified Domain Names, Nomes de domínio totalmente qualificados) do
mongos.createdData
Quando o
mongosfoi iniciado.Novidades na versão 5.2.
mongoVersionString
Versão do MongoDB que o
mongosestá executando.pingData
As instâncias
mongosenviam pings para o servidor de configuração a cada 30 segundos. Este campo indica a hora do último ping.upNúmero longo
Número de segundos em que
mongosesteve ativo desde o último ping.waitingBoolean
Esse campo é sempre
truee só é incluído para fins de compatibilidade com versões anteriores.O documento a seguir mostra o status do
mongosem execução noexample.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.placementHistoryDica
Metadados MongoDB internos
O banco de dados de configuração é interno. Aplicativos e administradores não devem modificar ou depender de seu conteúdo durante a operação normal.
A collection existe no servidor de configuração e registra quais shards contêm dados para um banco de dados ou collection em registros de data/hora de cluster específicos. O MongoDB utiliza estas informações para reconstruir a colocação de dados
placementHistoryhistóricos.Para uma collection chamada
myCollectionnotestbanco de dados, um documento na collection seria semelhante aoplacementHistoryseguinte:{ _id: ObjectId("61e0a1f4e5b8c9d0a1b2c3d4"), nss: "test.myCollection", collUuid: UUID("07c63242-51b3-460c-865f-a67b3372d792"), timestamp: Timestamp(1626895826, 1), shards: [ "shardA", "shardB" ] } O campo
nsspode conter um namespace ou um nome de banco de dados. O campocollUuidestá presente apenas para coleções.
config.rangeDeletionsA collection existe em cada shard e armazena um documento para cada faixa de chunk que contém documentos órfãos. A migração de chunk falha se o documento não puder ser gravado para a maioria dos membros do conjunto de réplica do
rangeDeletionsshard.Quando a faixa de chunks órfãos é limpa, o documento que descreve a faixa é excluído da collection.
config.settingsDica
Metadados MongoDB internos
O banco de dados de configuração é interno. Aplicativos e administradores não devem modificar ou depender de seu conteúdo durante a operação normal.
A collection contém as seguintes configurações de
settingsfragmentação:Tamanho do intervalo. Para alterar o tamanho do intervalo, consulte Modificar o Tamanho do Intervalo em um Cluster Fragmentado. O valor
chunksizeespecificado está em megabytes.Configurações do Balanceador. Para alterar as configurações do balanceador, incluindo o status do balanceador, consulte Gerenciar balanceador de cluster fragmentado.
Autosplit:
A partir do MongoDB 6.0.3, a divisão automática de partes não é executada. Isso se deve a melhorias na política de balanceamento. Os comandos de divisão automática ainda existem, mas não executam uma operação.
Em versões anteriores ao MongoDB 6.1:
balancerStarttambém permite a divisão automática para o cluster fragmentado.balancerStoptambém desabilita a divisão automática para o cluster fragmentado.Para habilitar ou desabilitar o sinalizador de divisão automática, use o método
sh.enableAutoSplit()correspondente ou o métodosh.disableAutoSplit().
Documentos de exemplo na collection
settings:{ "_id" : "chunksize", "value" : 64 } { "_id" : "balancer", "mode" : "full", "stopped" : false }
config.shardsDica
Metadados MongoDB internos
O banco de dados de configuração é interno. Aplicativos e administradores não devem modificar ou depender de seu conteúdo durante a operação normal.
A collection representa cada shard no cluster em um documento separado, como a
shardsseguir:{ "_id" : "shard0000", "host" : "localhost:30000", "state" : 1 } Se o shard for um conjunto de réplicas, o campo
hostexibirá o nome do conjunto de réplicas, depois uma barra e, em seguida, uma lista separada por vírgulas dos nomes de host de cada membro do conjunto de réplicas, como no exemplo a seguir:{ "_id" : "shard0001", "host" : "shard0001/localhost:27018,localhost:27019,localhost:27020", "state" : 1 } Se o shard tiver zonas atribuídas, este documento terá um campo
tags, que contém uma array das zonas às quais está atribuído, como no exemplo a seguir:{ "_id" : "shard0002", "host" : "localhost:30002", "state" : 1, "tags": [ "NYC" ] }
config.tagsDica
Metadados MongoDB internos
O banco de dados de configuração é interno. Aplicativos e administradores não devem modificar ou depender de seu conteúdo durante a operação normal.
A collection contém documentos para cada intervalo
tagstagsde zona no cluster. Os documentos na collection são semelhantes a:{ "_id" : { "ns" : "records.users", "min" : { "zipcode" : "10001" } }, "ns" : "records.users", "min" : { "zipcode" : "10001" }, "max" : { "zipcode" : "10281" }, "tag" : "NYC" }
config.versionDica
Metadados MongoDB internos
O banco de dados de configuração é interno. Aplicativos e administradores não devem modificar ou depender de seu conteúdo durante a operação normal.
A collection mantém o número da versão de metadados atual. Esta collection contém apenas um documento. Por
versionexemplo:{ "_id" : 1, "minCompatibleVersion" : 5, "currentVersion" : 6, "clusterId" : ObjectId("5d8bc01a690d8abbd2014ddd") } Para acessar
versiona collection, você deve usar odb.getCollection()método. Por exemplo, para recuperar o documento da collection :db.getCollection("version").find()
Collections para apoiar sessões
O banco de dados config contém as coleções internas para oferecer suporte a sessões causalmente consistentes para autônomos, conjuntos de réplicas e clusters fragmentados, gravações repetíveis e transações para conjuntos de réplicas e clusters fragmentados.
Aviso
Não modifique ou solte manualmente essas collections.
Para acessar essas collections para uma instância mongod mongos mongosh ou , conecte à instância.
config.system.sessionsA collection do
system.sessionsarmazena registros de sessão que estão disponíveis para todos os membros do sistema.Quando um usuário cria uma sessão em uma instância
mongodoumongos, o registro da sessão existe inicialmente apenas na memória da instância. Periodicamente, a instância sincronizará suas sessões em cache com a collectionsystem.sessions; nesse momento, elas estarão visíveis para todos os membros da implantação.Para visualizar registros na collection
system.sessions, utilize$listSessions.Aviso
Não modifique ou elimine manualmente a collection
system.sessions.Em um cluster fragmentado, a collection
system.sessionsé fragmentada.Ao adicionar um shard ao cluster fragmentado, se o shard a ser adicionado já contiver sua própria collection
system.sessions, o MongoDB soltará a collectionsystem.sessionsdo novo shard durante o processo de adição.
config.transactionsA collection
transactionsarmazena registros usados para suportar retryable writes e transações que podem ser repetidas para conjuntos de réplicas e cluster fragmentados .Aviso
Não modifique ou elimine manualmente a collection
transactions.