mergeChunks
정의
mergeChunks
샤딩된 컬렉션 의 경우
mergeChunks
는 샤드 의 연속 청크 범위를 단일 청크 로 결합합니다. 인스턴스mongos
에서 데이터베이스 에 대해 명령을 실행합니다.mergeChunks
admin
호환성
이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
중요
이 명령은 서버리스 인스턴스에서는 지원되지 않습니다. 자세한 내용은 지원되지 않는 명령을 참조하세요.
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
구문
명령은 다음과 같은 구문을 가집니다:
db.adminCommand( { mergeChunks: <namespace>, bounds : [ { <shardKeyField>: <minFieldValue> }, { <shardKeyField>: <maxFieldValue> } ] } )
복합 샤드 키의 경우 bounds
사양에 전체 샤드 키를 포함해야 합니다. 예를 들어 샤드 키가 { x: 1, y:
1 }
인 경우 mergeChunks
의 형식은 다음과 같습니다.
db.adminCommand( { mergeChunks: <namespace>, bounds: [ { x: <minValue>, y: <minValue> }, { x: <maxValue>, y: <maxValue> } ] } )
명령 필드
이 명령은 다음 필드를 사용합니다.
액세스 제어
authorization
으로 실행되는 배포에서 기본 제공 역할 clusterManager
필요한 권한을 제공합니다.
행동
참고
특별한 상황에서만 mergeChunks
를 사용합니다. 예를 들어 많은 문서를 제거한 후 샤드 클러스터 를 정리하는 경우가 이에 해당합니다.
청크를 성공적으로 병합하려면 다음 조건에 부합 해야 합니다.
bounds
필드에서<minkey>
과<maxkey>
은 병합할 청크 의 하한 및 상한에 해당해야 합니다.청크는 동일한 샤드에 있어야 합니다.
청크는 연속적이어야 합니다.
mergeChunks
이러한 조건이 충족되지 않으면 오류를 반환합니다.
메시지 반환
성공하면 mergeChunks
에서 이 문서를 반환합니다.
{ "ok" : 1, "$clusterTime" : { "clusterTime" : Timestamp(1510767081, 1), "signature" : { "hash" : BinData(0,"okKHD0QuzcpbVQg7mP2YFw6lM04="), "keyId" : NumberLong("6488693018630029321") } }, "operationTime" : Timestamp(1510767081, 1) }
다른 작업 진행 중
mergeChunks
{chunks
컬렉션에서 다른 메타데이터 작업이 진행 중인 경우 는 다음 오류 메시지를 반환합니다.
errmsg: "The collection's metadata lock is already taken."
밸런서 프로세스와 같은 다른 프로세스가 mergeChunks
실행 중에 메타데이터를 변경하면 이 오류가 표시될 수 있습니다. 부작용 없이 mergeChunks
작업을 다시 시도할 수 있습니다.
다양한 샤드의 청크
입력 청크 가 동일한 샤드 에 없으면 mergeChunks
는 다음과 유사한 오류를 반환합니다.
{ "ok" : 0, "errmsg" : "could not merge chunks, collection test.users does not contain a chunk ending at { username: \"user63169\" }", "$clusterTime" : { "clusterTime" : Timestamp(1510767081, 1), "signature" : { "hash" : BinData(0,"okKHD0QuzcpbVQg7mP2YFw6lM04="), "keyId" : NumberLong("6488693018630029321") } }, "operationTime" : Timestamp(1510767081, 1) }
비연속적인 청크
입력 청크 가 연속적이지 않은 경우 mergeChunks
는 다음과 유사한 오류를 반환합니다.
{ "ok" : 0, "errmsg" : "could not merge chunks, collection test.users has more than 2 chunks between [{ username: \"user29937\" }, { username: \"user49877\" })" "$clusterTime" : { "clusterTime" : Timestamp(1510767081, 1), "signature" : { "hash" : BinData(0,"okKHD0QuzcpbVQg7mP2YFw6lM04="), "keyId" : NumberLong("6488693018630029321") } }, "operationTime" : Timestamp(1510767081, 1) }