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

컬렉션 샤딩 해제

이 페이지의 내용

  • 이 작업에 대하여
  • 액세스 제어
  • 시작하기 전에
  • 단계
  • 자세히 알아보기

unshardCollection 명령을 사용하여 샤딩된 된 컬렉션 을 샤딩 해제할 수 있습니다. 컬렉션 의 샤딩을 해제하면 컬렉션 을 여러 샤드 로 분할할 수 없으며 샤드 키 가 제거됩니다.

기본값 으로 컬렉션 을 샤딩 해제하면 MongoDB 는 컬렉션의 데이터를 데이터 양이 가장 적은 샤드 로 이동합니다. 또는 데이터를 배치할 샤드 를 지정할 수 있습니다.

다음 환경에서 호스팅되는 배포에서 이 작업 을 수행할 수 있습니다.

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

참고

이 작업 은 Atlas 공유 계층 또는 Atlas 서버리스에서는 사용할 수 없습니다.

배포서버 에 액세스 제어 가 활성화되어 있는 경우 enableSharding 역할 은 unshardCollection 명령을 실행 수 있는 액세스 을 부여합니다.

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

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

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

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

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

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

1

샤딩된 컬렉션 의 데이터를 특정 샤드 에 저장하려면 대상 샤드의 이름이 필요합니다.

클러스터 의 샤드 이름 목록을 보려면 listShards 명령을 사용합니다.

db.adminCommand( { listShards: 1 } )

shards._id 필드에는 각 샤드의 이름이 나열됩니다.

2

컬렉션 의 샤딩을 해제하려면 unshardCollection 명령을 실행 합니다. 다음 예시 에서는 sales 데이터베이스 에서 us_accounts 라는 컬렉션 을 샤딩 해제합니다.

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

언샤드 작업이 완료되면 us_accounts 컬렉션 의 데이터는 shard1 에 있습니다. toShard 필드 를 생략하면 데이터는 데이터 양이 가장 적은 샤드 에 배치됩니다.

3

컬렉션 이 샤딩되지 않았는지 확인하려면 $shardedDataDistribution 단계를 사용하여 샤딩되지 않은 네임스페이스 에서 일치를 시도합니다.

db.aggregate( [
{ $shardedDataDistribution: { } },
{ $match: { "ns": "sales.us_accounts" } }
] )

집계 가 데이터를 반환하지 않으면 컬렉션 이 샤딩 해제됩니다.

돌아가기

샤딩되지 않은 컬렉션