unshardCollection
정의
unshardCollection
기존의 샤딩된 컬렉션 을 언샤드하고 컬렉션 데이터를 단일 샤드 로 이동합니다. 컬렉션 의 샤딩을 해제하면 컬렉션 을 여러 샤드 로 분할할 수 없으며 샤드 키 가 제거됩니다.
버전 8.0에 추가 되었습니다.
팁
mongosh
에서 이 명령은sh.unshardCollection()
을(를) 통해 실행 수도 있습니다.헬퍼 메서드는
mongosh
사용자에게 편리하지만 데이터베이스 명령과 동일한 수준의 정보를 반환하지 못할 수 있습니다. 편의가 필요하지 않거나 추가 리턴 필드가 필요한 경우 데이터베이스 명령을 사용합니다.이 명령은
admin
데이터베이스 에서 실행 되어야 합니다.참고
컬렉션 의 샤딩 해제는 쓰기 집약적인 작업으로 oplog 성장률이 증가할 수 있습니다. 이를 완화하려면 다음과 같은 구성 변경을 고려하세요.
oplog 의 무제한 증가를 방지하려면 고정된 oplog 크기를 설정하다 합니다.
세컨더리가 오래될 가능성을 줄이려면 oplog 크기를 늘리세요.
자세한 내용은 복제본 세트 oplog 를 참조하세요.
호환성
이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
중요
이 명령은 공유 또는 서버리스 인스턴스에서 실행 수 없습니다. 자세한 내용은 지원되지 않는 명령을 참조하세요.
제한 사항
다음에는 unshardCollection
을(를) 사용할 수 없습니다.
구문
db.adminCommand( { unshardCollection: "<database>.<collection>", toShard: "<shard-id>" } )
명령 필드
필드 | 유형 | 필요성 | 설명 |
---|---|---|---|
unshardCollection | 문자열 | 필수 사항 | 샤딩을 해제할 데이터베이스 및 컬렉션 을 지정합니다. |
toShard | 문자열 | 옵션 | 수신자 샤드 ID 를 지정합니다. MongoDB 가 컬렉션 을 샤딩 해제하면 컬렉션 데이터를 현재 샤드에서 이 특정 샤드 로 이동합니다. 지정하지 않으면 클러스터 는 데이터 양이 가장 적은 샤드 를 선택합니다. |
고려 사항
unshardCollection
샤딩된 클러스터에서만 실행 수 있습니다.unshardCollection
샤딩된 컬렉션에서만 작동할 수 있습니다.unshardCollection
한 번에 하나의 컬렉션 에서만 작동할 수 있습니다.unshardCollection
최소 지속 시간은 5 분입니다.unshardCollection
실행 후 Atlas Search 인덱스를 다시 작성해야 합니다.unshardCollection
이(가) 완료될 때까지 샤드를 추가 또는 제거하거나 내장된 구성 서버와 전용 구성 서버 간에 전환하는 등 토폴로지 를 변경할 수 없습니다.unshardCollection
이(가) 진행 중인 동안에는 샤딩 해제 중인 컬렉션 에서 다음 작업을 실행 수 없습니다.unshardCollection
이(가) 진행 중인 동안에는 클러스터 에서 다음 작업을 실행 수 없습니다.unshardCollection
이(가) 진행 중인 동안 발생하는 인덱스 빌드는 자동으로 실패할 수 있습니다.unshardCollection
이(가) 진행되는 동안에는 인덱스를 생성하지 마세요.진행 중인 인덱스 빌드가 있는 경우
unshardCollection
를 호출하지 마세요.
요구 사항:
컬렉션 의 샤딩을 해제하기 전에 다음 요구 사항을 충족하는지 확인하세요.
애플리케이션 은 영향을 받는 컬렉션 이 쓰기를 차단하는 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" } )