AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

checkMetadataConsistency(데이터베이스 명령)

checkMetadataConsistency

클러스터, 데이터베이스 또는 컬렉션 의 샤딩 메타데이터 에 대한 일련의 일관성 검사를 수행합니다. 이 명령은 발견된 불일치 결과의 전부 또는 배치 포함된 커서 반환합니다.

팁

In mongosh, this command can also be run through the db.checkMetadataConsistency(), db.collection.checkMetadataConsistency(), or sh.checkMetadataConsistency() helper methods.

Helper methods are convenient for mongosh users, but they may not return the same level of information as database commands. In cases where the convenience is not needed or the additional return fields are required, use the database command.

업그레이드 및 다운그레이드와 같은 주요 유지 관리 작업 후에 이 명령을 실행하여 카탈로그의 상태를 확인하세요.

기본적으로 이 명령은 샤드 전체에서 일관성을 위해 인덱스를 확인하지 않습니다. 인덱스를 확인하려면 checkIndexes 옵션을 설정합니다.

버전 7.0에 추가 되었습니다.

이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.

  • MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud

참고

This command is supported in all MongoDB Atlas clusters. For information on Atlas support for all commands, see Unsupported Commands.

참고

checkMetadataConsistency 명령은 mongos에 연결할 때만 실행할 수 있습니다. mongod 는 이 명령을 지원 하지 않습니다.

  • 전체 cluster의 샤딩 메타데이터 불일치를 확인하려면 admin 데이터베이스에서 명령을 실행합니다.

    db.adminCommand( {
    checkMetadataConsistency: 1
    } )
  • 데이터베이스에서 샤딩 메타데이터 불일치를 확인하려면 데이터베이스 컨텍스트에서 명령을 실행합니다.

    use cars
    db.runCommand( {
    checkMetadataConsistency: 1
    } )
  • 컬렉션 샤딩 메타데이터 불일치가 있는지 확인하려면 컬렉션 이름을 사용하여 명령을 실행 .

    use library
    db.runCommand( {
    checkMetadataConsistency: "authors",
    } )
필드
유형
설명

checkMetadataConsistency

정수 또는 문자열

확인할 컬렉션 지정합니다.

1
데이터베이스 의 모든 컬렉션에 메타데이터 불일치가 있는지 확인하도록 명령을 설정합니다. admin 데이터베이스 에서 실행 하면 모든 데이터베이스의 모든 컬렉션을 확인합니다.
"<collection>"
메타데이터 불일치를 확인하도록 컬렉션 설정합니다.

checkIndexes

부울

명령이 샤딩 메타데이터의 인덱스도 확인하는지 여부를 설정합니다.

For more information, see Check Indexes.

cursor

문서

리턴 커서를 구성합니다.

cursor.batchSize

integer

각 배치에 포함할 불일치 결과의 최대 개수입니다.

dbMetadataLockMaxTimeMS

integer

선택 사항. 데이터베이스 락 획득하기 위해 명령이 대기할 수 있는 최대 시간(밀리초)입니다.

이 필드 maxTimeMS와 함께 사용할 수도 있습니다. 예시 를 들어 dbMetadataLockMaxTimeMS 를 500 로 설정하다 하고 maxTimeMS 를 5000로 설정한 경우 작업은 데이터베이스 락 획득하기 위해 500 밀리초를 대기하고 전체 작업이 다음을 수행할 때까지 총 5000 밀리초 동안 대기합니다. 완료.

performStrictChunkChecksIfBelowThreshold

integer

버전 9.0에 추가 되었습니다.

선택 사항입니다. 명령이 확인된 컬렉션에 대해 샤드의 청크 메타데이터를 얼마나 철저하게 비교할지 결정하는 청크 개수 임계값입니다.

  • 샤드가 이 임계값보다 적은 컬렉션용 청크를 소유한 경우, 이 명령은 전체 비교를 수행합니다. 이 명령어는 config 서버, 샤드, 인메모리 청크 맵 전반에서 모든 청크의 메타데이터를 확인합니다.

  • 샤드의 청크 수가 임계값에 도달하거나 초과하면, 이 명령은 대신 총 청크 수와 가장 높은 청크 버전만 비교합니다.

기본값은 1152921504606846975 (2 60 - 1) 청크이며, 이는 곳 기본적으로 명령이 항상 전체 비교를 통한 엄격한 검사를 수행한다는 의미입니다.

For more information, see Chunk Check Threshold.

checkMetadataConsistency 명령은 샤딩 메타데이터 에서 발견된 각 불일치에 대한 문서 가 포함된 커서 를 반환합니다. 학습 내용은 불일치 유형을 참조하세요.

반환 문서에는 다음과 같은 필드가 있습니다.

필드
유형
설명

cursor

문서

불일치 검사 결과가 있는 커서입니다.

cursor.id

integer

64비트 정수는 커서 ID를 나타냅니다. cursor.id 값을 getMore 명령과 함께 사용하면 다음 불일치 배치를 조회할 수 있습니다.

커서가 ID 0 을(를) 반환하면 더 이상 정보 배치가 없다는 의미입니다.

cursor.ns

문자열

데이터베이스와 collection에 불일치가 있는지 확인했습니다.

cursor.firstBatch

배열

메타데이터 일관성 검사 결과입니다.

ok

부울

명령이 성공했는지 여부를 나타냅니다.

checkMetadataConsistency 명령은 결과를 배치로 반환합니다. 배치 크기를 사용자 지정하려면 batchSize 옵션을 사용합니다.

var cur = db.runCommand( {
checkMetadataConsistency: 1,
cursor: {
batchSize: 10
}
} )

cursor.id 필드가 0보다 크면 getMore 명령과 함께 사용하여 다음 결과 배치를 검색할 수 있습니다.

checkMetadataConsistency 명령은 기본적으로 인덱스를 확인하지 않습니다. 메타데이터 일관성 및 인덱스를 확인하려면 checkIndexes 옵션을 사용합니다.

db.runCommand( {
checkMetadataConsistency: 1,
checkIndexes: true
} )

기본적으로 checkMetadataConsistency 명령은 config 서버, 샤드 및 인메모리 청크 매핑에 걸쳐 모든 청크의 메타데이터에 대해 완전한 비교를 수행합니다. 많은 청크를 소유한 샤드에서 이 비교는 명령이 메타데이터 잠금을 유지하는 시간을 늘릴 수 있습니다. 많은 수의 청크는 명령이 config 서버에서 읽는 데이터 양도 증가시킬 수 있습니다.

이 영향을 줄이려면 performStrictChunkChecksIfBelowThreshold을(를) 청크 수로 설정합니다. 확인된 컬렉션의 샤드 청크 수가 이 임계값보다 작은 경우, 명령은 전체 청크 비교를 수행합니다. 카운트가 임계값을 초과하거나 같은 경우, 명령은 대신 총 청크 카운트와 가장 높은 청크 버전만 비교합니다.

db.runCommand( {
checkMetadataConsistency: 1,
performStrictChunkChecksIfBelowThreshold: 10000
} )

runCommand() 를 사용하여 checkMetadataConsistency 명령을 실행합니다:

db.runCommand( { checkMetadataConsistency: 1 } )

출력 예시:

{
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
}