정의
호환성
이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
- MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
중요
이 명령은 M0 및 Flex 클러스터에서 지원되지 않습니다. 자세한 내용은 지원되지 않는 명령을 참조하세요.
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
제한 사항
Queryable Encryption 컬렉션에는 moveCollection 을(를) 사용할 수 없습니다.
구문
명령은 다음과 같은 구문을 가집니다:
db.adminCommand( { moveCollection: "<database>.<collection>", toShard: "<ID of the recipient shard>", } )
참고
listShards 명령을 사용하여 수신자 샤드의 ID 조회.
명령 필드
이 명령은 다음 필드를 사용합니다.
필드 | 유형 | 설명 |
|---|---|---|
| 문자열 | 이동할 컬렉션 의 데이터베이스 및 이름입니다. |
| 문자열 | 수신자 샤드의 ID입니다. |
고려 사항
moveCollection샤딩된 클러스터에서만 실행 수 있습니다.moveCollection는 샤딩되지 않은 컬렉션만 이동할 수 있습니다.moveCollection한 번에 하나의 컬렉션 만 이동할 수 있습니다.moveCollection최소 지속 시간은 5 분입니다.writeConcernMajorityJournalDefault은(는)true이어야 합니다.고유성 제약 조건이 있는 컬렉션을 이동하려면 새 인덱스는 기존의 모든 고유 인덱스에 대한 고유 인덱스 요구 사항 을 충족해야 합니다.
이동 중인 컬렉션 이 Atlas Search 사용하는 경우
moveCollection이(가) 완료된 후에는 해당 검색 인덱스를 사용할 수 없게 됩니다. 검색 인덱스를 수동으로 다시 작성해야 합니다.If the collection you're moving is archived in Atlas Online Archives, the online archive files are marked as
Orphanedonce the moving 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 theActivestate.moveCollection가 완료될 때까지 샤드 추가 또는 제거 또는 임베디드 구성 서버와 전용 구성 서버 간의 전환과 같은 토폴로지 변경을 수행할 수 없습니다.moveCollection이(가) 진행 중인 동안에는 이동 중인 컬렉션 에 대해 다음 작업을 실행 수 없습니다.moveCollection이(가) 진행 중인 동안에는 클러스터 에 대해 다음 작업을 실행 수 없습니다.moveCollection이(가) 진행 중인 동안 발생하는 인덱스 빌드는 자동으로 실패할 수 있습니다.moveCollection이(가) 진행되는 동안에는 인덱스를 생성하지 마세요.진행 중인 인덱스 빌드가 있는 경우
moveCollection를 호출하지 마세요.
요구 사항:
컬렉션 을 이동하기 전에 다음 요구 사항을 충족하는지 확인하세요.
애플리케이션 은 영향을 받는 컬렉션 이 쓰기를 차단하는 2초의 기간을 허용할 수 있습니다. 쓰기가 차단되는 기간 동안 애플리케이션 의 지연 시간 이 증가합니다.
데이터베이스는 다음과 같은 리소스 요구 사항을 충족합니다.
컬렉션 을 이동하려는 샤드 에 컬렉션 및 해당 인덱스를 위한 충분한 저장 공간이 있는지 확인합니다. 대상 샤드 에는 최소
( Collection storage size + Index Size ) * 2바이트의 사용 가능한 공간이 필요합니다.I/O 용량 이 50% 미만인지 확인합니다.
CPU 로드가 80% 미만인지 확인합니다.
중요
이러한 요구 사항은 데이터베이스에 의해 적용되지 않습니다. 충분한 리소스를 할당하지 못하면 다음과 같은 결과가 발생할 수 있습니다.
데이터베이스 공간이 부족하여 종료되는 경우
성능 저하
작업이 예상보다 오래 걸리는 경우
애플리케이션 에 트래픽이 적은 기간이 있는 경우 가능하면 해당 기간 동안 컬렉션 에 대해 이 작업을 수행합니다.
예시
이 예시 에서는 app 데이터베이스 의 inventory 이라는 샤딩되지 않은 컬렉션 을 shard02 샤드 로 이동합니다.
db.adminCommand( { moveCollection: "app.inventory", toShard: "shard02" } )
사용 가능한 샤드 ID 목록을 가져오려면 sh.status() 를 실행 합니다. 자세한 내용은 sh.status() 출력을 참조하세요.