ANNOUNCEMENT: Voyage AI joins MongoDB to power more accurate and trustworthy AI applications on Atlas.
Learn more
Docs Menu

unshardCollection

unshardCollection

기존 샤딩된 컬렉션을 분할하여 컬렉션 데이터를 단일 샤드로 옮깁니다. 컬렉션의 샤딩을 해제하면 컬렉션을 여러 개의 샤드로 분할할 수 없고 분할 키가 제거됩니다.

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

mongosh 에서 이 명령은 sh.unshardCollection() 을(를) 통해 실행 수도 있습니다.

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

이 명령은 admin 데이터베이스 에서 실행 되어야 합니다.

컬렉션 에 구역 구성이 적용된 경우 컬렉션 의 샤딩을 해제하기 전에 먼저 구역 에서 범위 연결 및 샤드를 제거 해야 합니다. 자세한 내용은 구역 샤딩 해제를 참조하세요.

참고

컬렉션 의 샤딩 해제는 쓰기 집약적인 작업으로 oplog 성장률이 증가할 수 있습니다. 이를 완화하려면 다음과 같은 구성 변경을 고려하세요.

  • oplog 의 무제한 증가를 방지하려면 고정된 oplog 크기를 설정하다 합니다.

  • 세컨더리가 오래될 가능성을 줄이려면 oplog 크기를 늘리세요.

자세한 내용은 복제본 세트 oplog 를 참조하세요.

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

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

중요

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

다음에는 unshardCollection 을(를) 사용할 수 없습니다.

db.adminCommand( {
unshardCollection: "<database>.<collection>",
toShard: "<shard-id>"
} )
필드
유형
필요성
설명

unshardCollection

문자열

필수 사항

샤딩을 해제할 데이터베이스 및 컬렉션 을 지정합니다.

toShard

문자열

옵션

수신자 샤드 ID 를 지정합니다. MongoDB 가 컬렉션 을 샤딩 해제하면 컬렉션 데이터를 현재 샤드에서 이 특정 샤드 로 이동합니다.

지정하지 않으면 클러스터 는 데이터 양이 가장 적은 샤드 를 선택합니다.

컬렉션 의 샤딩을 해제하기 전에 다음 요구 사항을 충족하는지 확인하세요.

  • 애플리케이션 은 영향을 받는 컬렉션 이 쓰기를 차단하는 2초의 기간을 허용할 수 있습니다. 쓰기가 차단되는 기간 동안 애플리케이션 의 지연 시간 이 증가합니다.

  • 데이터베이스는 다음과 같은 리소스 요구 사항을 충족합니다.

    • 컬렉션 을 이동하려는 샤드 에 컬렉션 및 해당 인덱스를 위한 충분한 저장 공간이 있는지 확인합니다. 대상 샤드 에는 최소 ( Collection storage size + Index Size ) * 2 바이트의 사용 가능한 공간이 필요합니다.

    • I/O 용량 이 50% 미만인지 확인합니다.

    • CPU 로드가 80% 미만인지 확인합니다.

구역 샤딩 사용하는 컬렉션 샤딩 해제하려면 먼저 밸런서 중지한 다음 구역 에서 범위 와 샤드 제거 .

예시 는 구역 샤드 컬렉션 샤딩 해제를 참조하세요.

다음 예시 에서는 sales.eu_accounts 컬렉션 을 샤딩 해제합니다.

db.adminCommand( {
unshardCollection: "sales.eu_accounts"
} )

다음 예시 에서는 sales.us_accounts 컬렉션의 샤딩을 해제하고 컬렉션 데이터를 shard1 에 배치합니다.

db.adminCommand( {
unshardCollection: "sales.eu_accounts",
toShard: "shard1"
} )

다음 예시 구역을 사용하는 컬렉션 샤딩을 해제합니다.

1

밸런서 를 중지하려면 명령을 실행 balancerStop .

db.adminCommand( { balancerStop: 1 } )
2

구역과 연결된 범위를 식별하려면 메서드를 실행 하고 sh.status()chunks 샤딩된 컬렉션 에 대해 필드 의 범위를 기록합니다.

sh.status()
3

구역 에서 범위 제거 하려면 명령을 실행 updateZoneKeyRange .

db.adminCommand( {
updateZoneKeyRange: "app.inventory",
min: 100,
max: 500,
zone: null
} )

컬렉션 에서 사용하는 구역에서 모든 범위를 제거할 때까지 이 단계를 반복합니다.

4

구역 에서 샤드를 제거 하려면 removeShardFromZone 명령을 실행 .

db.adminCommand( {
removeShardFromZone: "shard01",
zone: "us"
} )

구역에서 모든 컬렉션 샤드를 제거할 때까지 반복합니다.

5

밸런서 다시 시작하려면 명령을 실행 balancerStart .

db.adminCommand( { balancerStart: 1 } )
6

컬렉션 샤딩을 해제하려면 unshardCollection 명령을 실행 .

db.adminCommand( { unshardCollection: "app.inventory" } )