Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Banco de dados de configuração

Nesta página

  • Restrições
  • Collections para dar suporte a operações de cluster fragmentado
  • Collections para apoiar sessões

As collections no banco de dados config suportam:

Observação

Clusters fragmentados podem mostrar collection diferentes no reconhecimento de data center config , dependendo se você se conecta a mongos ou mongod:

  • No mongos, o banco de dados do config mostra coleções localizadas nos servidores de configuração, como collections ou chunks.

  • No mongod, o banco de dados do config mostra coleção específicas para o fragmento fornecido, como migrationCoordinators ou rangeDeletions.

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 .

A partir do MongoDB 5.0, leituras que não de transação não são permitidas na collection config.transactions com as seguintes opções e read concerns:

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.

Para acessar o banco de dados do config e visualizar a lista de collections que suportam operações de sharding, conecte o mongosh a uma instância do mongos em um agrupamento 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 banco de dados do config em um sistema funcional pode levar à instabilidade ou conjuntos de dados inconsistentes. Se você deve modificar o banco de dados do config , utilize o mongodump para criar uma cópia de segurança completa do banco de dados do config .

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.changelog

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 changelog armazena um documento para cada alteração nos metadados de uma collection fragmentada.

Exemplo

O exemplo a seguir exibe um único registro de uma dividir de chunk de uma collection 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 na collection changelog contém os seguintes campos:

config.changelog._id

O valor de changelog._id é: <hostname>-<timestamp>-<increment>.

config.changelog.server

O nome do host do servidor que contém esses dados.

config.changelog.clientAddr

Uma cadeia de caracteres que contém o endereço do cliente, uma instância mongos que inicia essa alteração.

config.changelog.time

Um carimbo de data/hora ISODate que reflete quando a alteração ocorreu.

config.changelog.what

O tipo de alteração gravada. Os valores possíveis incluem:

  • dropCollection

  • dropCollection.start

  • dropDatabase

  • dropDatabase.start

  • moveChunk.start

  • moveChunk.commit

  • split

  • multi-split

config.changelog.ns

Namespace onde ocorreu a mudança.

config.changelog.details

Um documento que contém detalhes adicionais para a alteração. A estrutura do documento details depende do tipo de alteração.

config.chunks

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 config.chunks armazena um documento para cada chunk no cluster. O exemplo a seguir mostra um 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'
}
]
}

No documento:

  • _id é o identificador de parte.

  • min e max sã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 identificador uuid da collection a partir da collection config.collections . Em seguida, use uuid para recuperar o documento correspondente com o mesmo uuid da collection config.chunks .

config.collections

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 collections armazena um documento para cada collection fragmentada no cluster. Considerando uma collection chamada pets no database records , um documento na collection collections seria semelhante ao seguinte:

{
"_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.indexes

Novidades 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 coleção indexes armazena um documento para cada índice global disponível em um fragmento.

Cada documento na collection contém os seguintes campos:

Campo
Tipo de Dados
Descrição
name
String
Nome do índice global.
keyPattern
Documento
Especificação da chave de índice.
options
Documento
Fornece informações sobre as opções de índice especificadas, incluindo se o índice é um índice global.
lastmod
Timestamp
Registro de data/hora que fornece informações sobre quando o índice foi modificado pela última vez e a versão do índice.
collectionUUID
UUID
UUID da collection fragmentada.
indexCollectionUUID
UUID
UUID da collection secundária que rastreia o índice global.
config.databases

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 databases armazena um documento para cada banco de dados no cluster.

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.migrationCoordinators

A collection migrationCoordinators existe em cada shard e 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.mongos

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 mongos armazena um documento para cada instância mongos afiliada ao cluster. O cluster mantém essa coleção para fins de relatório.

Cada documento na collection mongos contém estes campos:

Campo
Tipo de Dados
Descrição
_id
String
O nome do host e a porta onde o mongos está sendo executado. O _id está formatado como <hostname>:<port>.
advisoryHostFQDNs
Array de strings
Array dos FQDNs (Fully Qualified Domain Names, Nomes de domínio totalmente qualificados) do mongos.
created
Data

Quando o mongos foi iniciado.

Novidades na versão 5,2.

mongoVersion
String
Versão do MongoDB que o mongos está executando.
ping
Data
As instâncias mongos enviam pings para o servidor de configuração a cada 30 segundos. Este campo indica a hora do último ping.
up
Número longo
Número de segundos em que mongos esteve ativo desde o último ping.
waiting
Boolean
A partir do MongoDB 3.4, esse campo é sempre true e está presente apenas para fins de compatibilidade com versões anteriores.

O documento a seguir mostra o status do mongos em execução no example.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.rangeDeletions

A collection rangeDeletions 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 shard.

Quando a faixa de chunks órfãos é limpa, o documento que descreve a faixa é excluído da collection.

config.settings

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 settings contém as seguintes configurações de fragmentação:

  • Tamanho do intervalo. Para alterar o tamanho do intervalo, consulte Modificar o Tamanho do Intervalo em um Cluster Fragmentado. O valor chunksize especificado 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.

  • Divisão automática:

    A partir do MongoDB 6.0.3, a divisão automática de chunks não é executada. Isso se deve às melhorias no balanceamento das políticas. Os comandos de divisão automática ainda existem, mas não executam uma operação.

    Em versões anteriores ao MongoDB 6.1:

Documentos de exemplo na collection settings:

{ "_id" : "chunksize", "value" : 64 }
{ "_id" : "balancer", "mode" : "full", "stopped" : false }
config.shards

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 shards representa cada shard no cluster em um documento separado, como a seguir:

{ "_id" : "shard0000", "host" : "localhost:30000", "state" : 1 }

Se o shard for um conjunto de réplicas, o campo host exibirá 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.tags

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 tags contém documentos para cada intervalo de zona no cluster. Os documentos na coleção tags se assemelham ao seguinte:

{
"_id" : { "ns" : "records.users", "min" : { "zipcode" : "10001" } },
"ns" : "records.users",
"min" : { "zipcode" : "10001" },
"max" : { "zipcode" : "10281" },
"tag" : "NYC"
}
config.version

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 version mantém o número da versão de metadados atual. Esta collection contém apenas um documento. Por exemplo:

{ "_id" : 1, "minCompatibleVersion" : 5, "currentVersion" : 6, "clusterId" : ObjectId("5d8bc01a690d8abbd2014ddd") }

Para acessar a collection version , você deve usar o método db.getCollection() . Por exemplo, para recuperar o documento da collection:

db.getCollection("version").find()

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 ou mongos , conecte mongosh à instância.

config.system.sessions

A collection do system.sessions armazena 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 mongod ou mongos, 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 collection system.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 collection system.sessions do novo shard durante o processo de adição.

config.transactions

A collection transactions armazena 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.

← Referência de fragmentação