Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

컬렉션 샤딩 해제

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

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

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

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

참고

이 작업 MongoDB Atlas 무료 또는 Flex 계층에서는 사용할 수 없습니다.

  • unshardCollection 샤딩된 클러스터에서만 실행 수 있습니다.

  • unshardCollection 샤딩된 컬렉션에서만 작동할 수 있습니다.

  • unshardCollection 한 번에 하나의 컬렉션 에서만 작동할 수 있습니다.

  • unshardCollection 최소 지속 시간은 5 분입니다.

  • unshardCollection 실행 후 Atlas Search 인덱스를 다시 작성해야 합니다.

  • writeConcernMajorityJournalDefault은(는) true이어야 합니다.

  • unshardCollection 이(가) 완료될 때까지 샤드를 추가 또는 제거하거나 내장된 구성 서버와 전용 구성 서버 간에 전환하는 등 토폴로지 를 변경할 수 없습니다.

  • unshardCollection 이(가) 진행 중인 동안에는 샤딩 해제 중인 컬렉션 에서 다음 작업을 실행 수 없습니다.

  • unshardCollection 이(가) 진행 중인 동안에는 클러스터 에서 다음 작업을 실행 수 없습니다.

  • unshardCollection 이(가) 진행 중인 동안 발생하는 인덱스 빌드는 자동으로 실패할 수 있습니다.

    • unshardCollection 이(가) 진행되는 동안에는 인덱스를 생성하지 마세요.

    • 진행 중인 인덱스 빌드가 있는 경우 unshardCollection 를 호출하지 마세요.

  • 오류를 방지하기 위해 MongoDB unshardCollection를 실행 때 컬렉션 의 영역을 자동으로 삭제합니다.

  • If the collection you're unsharding uses Atlas Search, the search index becomes unavailable when the unsharding operation completes. You need to manually rebuild the search index once the unsharding operation completes.

  • If the collection you're unsharding is archived in Atlas Online Archives, the online archive files are marked as Orphaned once the unsharding operation completes. You can create another online archive for the same database, collection, and fields as the orphaned archive as long as there is no other archive for that same combination in the Active state.

배포서버 에 액세스 제어 가 활성화되어 있는 경우 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" } }
] )

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

돌아가기

샤딩되지 않은 컬렉션

이 페이지의 내용