Definição
checkMetadataConsistencyExecuta uma série de verificações de consistência na fragmentação de metadados para um cluster, banco de dados ou collection. O comando retorna um cursor com todos ou um lote dos resultados de inconsistência encontrados.
Dica
Em
mongosh, esse comando também pode ser executado por meio dos métodos assistentedb.checkMetadataConsistency(),db.collection.checkMetadataConsistency()oush.checkMetadataConsistency().Os métodos auxiliares são convenientes para os usuários
mongosh, mas podem não retornar o mesmo nível de informações que os comandos do banco de dados . Nos casos em que a conveniência não for necessária ou os campos de retorno adicionais forem necessários, use o comando de banco de dados.Execute este comando após as principais operações de manutenção, como atualizações e downgrades, para verificar o estado do catálogo.
Por padrão, o comando não verifica a consistência dos índices nos fragmentos. Para verificar índices, defina a opção
checkIndexes.Novidades na versão 7.0.
Compatibilidade
Esse comando está disponível em implantações hospedadas nos seguintes ambientes:
- MongoDB Atlas: o serviço totalmente gerenciado para implantações MongoDB na nuvem
Observação
Este comando é suportado em todos os clusters do MongoDB Atlas . Para obter informações sobre o suporte do Atlas para todos os comandos, consulte Comandos não suportados.
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Observação
O comando checkMetadataConsistency é executável somente ao conectar ao mongos. mongod não suporta este comando.
Sintaxe
Para verificar se há inconsistências de metadados de fragmentação em todo o cluster, execute o comando a partir do reconhecimento de data center
admin.db.adminCommand( { checkMetadataConsistency: 1 } ) Para verificar se há inconsistências de metadados de fragmentação no reconhecimento de data center, execute o comando a partir do contexto do reconhecimento de data center:
use cars db.runCommand( { checkMetadataConsistency: 1 } ) Para verificar se há inconsistências de metadados de fragmentação em uma coleção, execute o comando com o nome da coleção:
use library db.runCommand( { checkMetadataConsistency: "authors", } )
Campos de comando
Campo | Tipo | Descrição |
|---|---|---|
| inteiro ou string | Especifica a collection a ser verificada.
|
| booleano | Define se o comando também verifica índices em metadados de fragmentação. Para obter mais informações, consulte Verificar índices. |
| documento | Configura o cursor de retorno. |
| inteiro | Número máximo de resultados de inconsistência a serem incluídos em cada lote. |
| inteiro | Opcional. Tempo máximo, em milissegundos, em que o comando pode esperar para adquirir uma bloqueio de banco de dados . Você também pode usar este campo com |
| inteiro | Novidades na versão 9.0. Opcional. Limite de contagem de chunks que determina o quão completamente o comando compara os metadados de chunk de um shard para a collection verificada.
O valor padrão é Para obter mais informações, consulte Limite de verificação de chunk. |
Saída
O comando checkMetadataConsistency retorna um cursor com um documento para cada inconsistência encontrada nos metadados de fragmentação. Para saber mais, consulte Tipos de inconsistência.
O documento de devolução tem os seguintes campos:
Campo | Tipo | Descrição |
|---|---|---|
| documento | Cursor com os resultados das verificações de inconsistência. |
| inteiro | Um número inteiro de 64 bits indicava o ID do cursor. Use o valor Se o cursor retornar um ID de |
| string | O reconhecimento de data center e a collection verificaram se há inconsistências. |
| array | Resultados das verificações de consistência dos metadados. |
| booleano | Indica se o comando foi bem-sucedido. |
Comportamento
Resultados em lote
O comando checkMetadataConsistency retorna resultados em lotes. Para personalizar o tamanho do lote, a opção batchSize :
var cur = db.runCommand( { checkMetadataConsistency: 1, cursor: { batchSize: 10 } } )
Se o campo cursor.id for maior que 0, você poderá utilizar com o comando getMore para recuperar o próximo lote de resultados.
Verificar índices
O comando checkMetadataConsistency não verifica índices por padrão. Para verificar a consistência e os índices dos metadados, utilize a opção checkIndexes :
db.runCommand( { checkMetadataConsistency: 1, checkIndexes: true } )
Limite de verificação de chunk
Por padrão, o comando checkMetadataConsistency executa uma comparação completa dos metadados de cada chunk no servidor de configuração, no shard e no mapa de chunks na memória. Em um shard que possui um grande número de chunks, essa comparação pode aumentar o tempo que o comando mantém seu bloqueio de metadados . Um grande número de blocos também pode aumentar a quantidade de dados que o comando lê do servidor de configuração.
Para reduzir esse impacto, defina performStrictChunkChecksIfBelowThreshold para uma contagem de chunks. Quando a contagem de chunks de um shard para a collection verificada é menor que esse limite, o comando executa a comparação completa do chunk. Quando a contagem atinge ou excede o limite, o comando compara apenas a contagem total de chunks e a versão de chunk mais alta:
db.runCommand( { checkMetadataConsistency: 1, performStrictChunkChecksIfBelowThreshold: 10000 } )
Exemplo
Use runCommand() para executar o comando checkMetadataConsistency :
db.runCommand( { checkMetadataConsistency: 1 } )
Exemplo de saída:
{ cursor: { id: Long("0"), ns: "test.$cmd.aggregate", firstBatch: [ { type: "MisplacedCollection", description: "Unsharded collection found on shard different from database primary shard", details: { namespace: "test.authors", shard: "shard02", localUUID: new UUID("1ad56770-61e2-48e9-83c6-8ecefe73cfc4") } } ], }, ok: 1 }