Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / /

moveChunk

이 페이지의 내용

  • 정의
  • 호환성
  • 고려 사항
  • 행동
moveChunk

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

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

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

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
부울

선택 사항. 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의 샤드 간에 청크가 이동하는 방법을 설명합니다.

다음도 참조하세요.

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

  • MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스

중요

이 명령은 서버리스 인스턴스에서는 지원되지 않습니다. 자세한 내용은 지원되지 않는 명령을 참조하세요.

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

moveChunk 에서는 모든 인덱스가 대상에 존재해야 합니다(예: to )를 제거하고 필요한 인덱스가 없는 경우 오류를 반환합니다.

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

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

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

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

돌아가기

mergeAllChunksOnShard

이 페이지의 내용