컬렉션 샤딩 해제
unshardCollection
명령을 사용하여 샤딩된 된 컬렉션 을 샤딩 해제할 수 있습니다. 컬렉션 의 샤딩을 해제하면 컬렉션 을 여러 샤드 로 분할할 수 없으며 샤드 키 가 제거됩니다.
기본값 으로 컬렉션 을 샤딩 해제하면 MongoDB 는 컬렉션의 데이터를 데이터 양이 가장 적은 샤드 로 이동합니다. 또는 데이터를 배치할 샤드 를 지정할 수 있습니다.
이 작업에 대하여
호환성
다음 환경에서 호스팅되는 배포에서 이 작업 을 수행할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
참고
이 작업 은 Atlas 공유 계층 또는 Atlas 서버리스에서는 사용할 수 없습니다.
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
제한 사항
unshardCollection
샤딩된 클러스터에서만 실행 수 있습니다.unshardCollection
샤딩된 컬렉션에서만 작동할 수 있습니다.unshardCollection
한 번에 하나의 컬렉션 에서만 작동할 수 있습니다.unshardCollection
최소 지속 시간은 5 분입니다.unshardCollection
실행 후 Atlas Search 인덱스를 다시 작성해야 합니다.unshardCollection
이(가) 완료될 때까지 샤드를 추가 또는 제거하거나 내장된 구성 서버와 전용 구성 서버 간에 전환하는 등 토폴로지 를 변경할 수 없습니다.unshardCollection
이(가) 진행 중인 동안에는 샤딩 해제 중인 컬렉션 에서 다음 작업을 실행 수 없습니다.unshardCollection
이(가) 진행 중인 동안에는 클러스터 에서 다음 작업을 실행 수 없습니다.unshardCollection
이(가) 진행 중인 동안 발생하는 인덱스 빌드는 자동으로 실패할 수 있습니다.unshardCollection
이(가) 진행되는 동안에는 인덱스를 생성하지 마세요.진행 중인 인덱스 빌드가 있는 경우
unshardCollection
를 호출하지 마세요.
액세스 제어
배포서버 에 액세스 제어 가 활성화되어 있는 경우 enableSharding
역할 은 unshardCollection
명령을 실행 수 있는 액세스 을 부여합니다.
시작하기 전에
컬렉션 의 샤딩을 해제하기 전에 다음 요구 사항을 충족하는지 확인하세요.
애플리케이션 은 영향을 받는 컬렉션 이 쓰기를 차단하는 2초의 기간을 허용할 수 있습니다. 쓰기가 차단되는 기간 동안 애플리케이션 의 지연 시간 이 증가합니다.
데이터베이스는 다음과 같은 리소스 요구 사항을 충족합니다.
컬렉션 을 이동하려는 샤드 에 컬렉션 및 해당 인덱스를 위한 충분한 저장 공간이 있는지 확인합니다. 대상 샤드 에는 최소
( Collection storage size + Index Size ) * 2
바이트의 사용 가능한 공간이 필요합니다.I/O 용량 이 50% 미만인지 확인합니다.
CPU 로드가 80% 미만인지 확인합니다.
단계
(선택 사항) 샤드 이름 나열
샤딩된 컬렉션 의 데이터를 특정 샤드 에 저장하려면 대상 샤드의 이름이 필요합니다.
클러스터 의 샤드 이름 목록을 보려면 listShards
명령을 사용합니다.
db.adminCommand( { listShards: 1 } )
shards._id
필드에는 각 샤드의 이름이 나열됩니다.
컬렉션 샤딩 해제
컬렉션 의 샤딩을 해제하려면 unshardCollection
명령을 실행 합니다. 다음 예시 에서는 sales
데이터베이스 에서 us_accounts
라는 컬렉션 을 샤딩 해제합니다.
db.adminCommand( { unshardCollection: "sales.us_accounts", toShard: "shard1" } )
언샤드 작업이 완료되면 us_accounts
컬렉션 의 데이터는 shard1
에 있습니다. toShard
필드 를 생략하면 데이터는 데이터 양이 가장 적은 샤드 에 배치됩니다.
컬렉션 이 샤딩되지 않았는지 확인
컬렉션 이 샤딩되지 않았는지 확인하려면 $shardedDataDistribution
단계를 사용하여 샤딩되지 않은 네임스페이스 에서 일치를 시도합니다.
db.aggregate( [ { $shardedDataDistribution: { } }, { $match: { "ns": "sales.us_accounts" } } ] )
집계 가 데이터를 반환하지 않으면 컬렉션 이 샤딩 해제됩니다.