문서 메뉴
문서 홈
/
MongoDB 매뉴얼
/ / /

moveChunk

이 페이지의 내용

  • 정의
  • 고려 사항
  • 행동
moveChunk

내부 관리 명령.샤드 간에 청크 를 이동합니다. 관리 데이터베이스 를 사용하는 moveChunk 동안 인스턴스를 통해 mongos 명령을 실행합니다. 다음 양식을 사용하세요.

mongosh 에서 이 명령은 sh.moveChunk() 헬퍼 메서드를 통해서도 실행할 수 있습니다.

헬퍼 메서드는 mongosh 사용자에게 편리하지만 데이터베이스 명령과 동일한 수준의 정보를 반환하지 않을 수 있습니다. 편의가 필요하지 않거나 추가 반환 필드가 필요한 경우 database 명령을 사용합니다.

db.adminCommand( { moveChunk : <namespace> ,
find : <query> ,
to : <string>,
forceJumbo: <boolean>,
_secondaryThrottle : <boolean>,
writeConcern: <document>,
_waitForDelete : <boolean> } )

또는:

db.adminCommand( { moveChunk : <namespace> ,
bounds : <array> ,
to : <string>,
forceJumbo: <boolean>,
_secondaryThrottle : <boolean>,
writeConcern: <document>,
_waitForDelete : <boolean> } )

moveChunk 명령에는 다음과 같은 필드가 있습니다.

필드
유형
설명
moveChunk
문자열
청크 존재하는 collection 의 네임스페이스 입니다. 데이터베이스 이름을 포함하여 컬렉션의 전체 네임스페이스를 지정합니다.
find
문서
이동할 청크의 샤드 키 값을 지정하는 샤드 키의 동등성 매치입니다. bounds 필드 또는 find 필드 중 하나만 지정하고 둘 다 지정하지는 않습니다. 해시 샤드 키 를사용하는 컬렉션에서 청크를 선택하는 데 필드를 사용하지 마세요 .find
bounds
배열
이동할 특정 청크의 경계입니다. 배열은 이동할 청크의 하위 및 상위 샤드 키 값을 지정하는 두 개의 문서로 구성되어야 합니다. bounds 필드 또는 find 필드 중 하나만 지정하고 둘 다 지정하지는 않습니다. bounds 를 사용하여 해시 샤드 키를 사용하는 컬렉션에서 청크를 선택합니다.
to
문자열
청크의 대상 샤드 이름입니다.
부울

선택 사항. 명령 이 마이그레이션하기에는 너무 큰 청크를 이동할 수 있는지 여부를 결정하는 플래그입니다. 청크에는 점보 레이블이 지정되거나 표시되지 않을 수 있습니다.

  • true 인 경우 명령은 청크를 이동할 수 있습니다.

  • false 인 경우 명령은 청크를 이동할 수 없습니다.

기본값은 false입니다.

경고

forceJumbo: true moveChunk 를 사용하여 를 실행하면 마이그레이션 중에 컬렉션에 대한 쓰기 작업이 오랫동안 차단될 수 있습니다. 긴 차단 기간 없이 이러한 큰 청크를 마이그레이션하려면 대신 크기 제한을 초과하는 범위 균형 조정 을 참조하세요.

_secondaryThrottle
부울

선택 사항. MongoDB 3.4부터 WiredTiger 의 경우 기본값은 false 입니다.

  • true 인 경우 기본적으로 청크 마이그레이션 중에 이동하는 각 문서는 밸런서가 다음 문서를 진행하기 전에 적어도 하나의 보조 문서로 전파됩니다. 이는 { w: 2 } 의 쓰기 고려 (write concern)와 동일합니다.

    다른 쓰기 고려 (write concern)를 지정하려면 writeConcern 옵션을 사용합니다.

  • false 인 경우 밸런서는 보조 문서로의 복제를 기다리지 않고 대신 다음 문서를 계속 진행합니다.

자세한 내용은 보조 스로틀을 참조하세요.

writeConcern
문서

선택 사항. Express 청크 마이그레이션 중에 _secondaryThrottle 가 세컨더리를 기다리는 데 사용할 쓰기 고려 (write concern) 를 문서입니다.

writeConcern _secondaryThrottle: true 가 필요합니다.

_waitForDelete
부울
선택 사항. 테스트 목적을 위한 내부 옵션입니다. 기본값은 false 입니다. true 로 설정하면 moveChunk 작업의 삭제 단계가 차단됩니다.

bounds 의 값은 다음과 같은 형식을 취합니다.

[ { hashedField : <minValue> } ,
{ hashedField : <maxValue> } ]

청크 마이그레이션 섹션에서는 MongoDB의 샤드 간에 청크가 이동하는 방법을 설명합니다.

다음도 참조하세요.

데이터의 초기 수집을 위한 샤드 클러스터 준비 또는 대규모 대량 가져오기 작업과 같은 특별한 상황에서만 moveChunk 를 사용합니다. 대부분의 경우 밸런서가 샤드 클러스터에서 청크를 생성하고 밸런싱할 수 있습니다. 자세한 내용 은 샤드 클러스터에서 범위 생성 을 참조하세요.

moveChunk 은 마이그레이션 전에 모든 인덱스가 대상(예: to ) 샤드에 존재해야 하며 필요한 인덱스가 존재하지 않으면 오류를 반환합니다.

moveChunk{chunks 컬렉션에서 다른 메타데이터 작업이 진행 중인 경우 는 다음 오류 메시지를 반환합니다.

errmsg: "The collection's metadata lock is already taken."

moveChunk 가 실행되는 동안 다른 프로세스(예: 밸런서 프로세스)가 메타데이터를 변경하면 이 오류가 표시될 수 있습니다. 부작용 없이 moveChunk 작업을 다시 시도할 수 있습니다.

MongoDB 5 부터 시작.0 maxCatchUpPercentageBeforeBlockingWrites 를 설정하여 전송 중인 청크의 총 크기(MB)와 비교했을 때 moveChunk 작업 중에 아직 마이그레이션되지 않은 데이터의 최대 허용 비율을 지정할 수 있습니다.

← mergeAllChunksOnShard

이 페이지의 내용