sh.moveCollection()
정의
sh.moveCollection(namespace, destination)
샤딩되지 않은 단일 컬렉션 을 다른 샤드 로 이동합니다. 관리
sh.moveCollection()
mongos
데이터베이스 를 사용하는 동안 인스턴스 로 를 실행합니다.중요
Mongo쉬 방법
이 페이지에서는
mongosh
메서드를 설명합니다. 이는 데이터베이스 명령 또는 Node.js와 같은 언어별 드라이버에 대한 설명서가 아닙니다.데이터베이스 명령에 대해서는
moveCollection
명령을 참조하십시오.MongoDB API 드라이버의 경우 언어별 MongoDB 드라이버 설명서를 참조하세요.
구문
sh.moveCollection()
의 구문은 다음과 같습니다:
sh.moveCollection( "<database>.<collection>" )
매개변수
sh.moveCollection()
다음 매개변수를 사용합니다.
Parameter | 유형 | 설명 |
---|---|---|
namespace | 문자열 | 이동할 컬렉션 의 데이터베이스 및 이름입니다. |
toShard | 문자열 | 수신자 샤드의 ID입니다. |
호환성
이 메서드는 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
참고
이 명령은 Atlas 공유 계층에서는 사용할 수 없습니다.
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
고려 사항
sh.moveCollection()
샤딩된 클러스터에서만 실행 수 있습니다.sh.moveCollection()
는 샤딩되지 않은 컬렉션만 이동할 수 있습니다.sh.moveCollection()
한 번에 하나의 컬렉션 만 이동할 수 있습니다.sh.moveCollection()
최소 지속 시간은 5 분입니다.moveCollection
실행 후 Atlas Search 인덱스를 다시 작성해야 합니다.moveCollection
가 완료될 때까지 샤드 추가 또는 제거 또는 임베디드 구성 서버와 전용 구성 서버 간의 전환과 같은 토폴로지 변경을 수행할 수 없습니다.sh.moveCollection()
이(가) 진행 중인 동안에는 이동 중인 컬렉션 에 대해 다음 작업을 실행 수 없습니다.moveCollection
이(가) 진행 중인 동안에는 클러스터 에 대해 다음 작업을 실행 수 없습니다.sh.moveCollection()
이(가) 진행 중인 동안 발생하는 인덱스 빌드는 자동으로 실패할 수 있습니다.sh.moveCollection()
이(가) 진행되는 동안에는 인덱스를 생성하지 마세요.진행 중인 인덱스 빌드가 있는 경우
sh.moveCollection()
를 호출하지 마세요.
요구 사항:
컬렉션 을 이동하기 전에 다음 요구 사항을 충족하는지 확인하세요.
애플리케이션 은 영향을 받는 컬렉션 이 쓰기를 차단하는 2초의 기간을 허용할 수 있습니다. 쓰기가 차단되는 기간 동안 애플리케이션 의 지연 시간 이 증가합니다.
데이터베이스는 다음과 같은 리소스 요구 사항을 충족합니다.
컬렉션 을 이동하려는 샤드 에 컬렉션 및 해당 인덱스를 위한 충분한 저장 공간이 있는지 확인합니다. 대상 샤드 에는 최소
( Collection storage size + Index Size ) * 2
바이트의 사용 가능한 공간이 필요합니다.I/O 용량 이 50% 미만인지 확인합니다.
CPU 로드가 80% 미만인지 확인합니다.
중요
이러한 요구 사항은 데이터베이스에 의해 적용되지 않습니다. 충분한 리소스를 할당하지 못하면 다음과 같은 결과가 발생할 수 있습니다.
데이터베이스 공간이 부족하여 종료되는 경우
성능 저하
작업이 예상보다 오래 걸리는 경우
애플리케이션 에 트래픽이 적은 기간이 있는 경우 가능하면 해당 기간 동안 컬렉션 에 대해 이 작업을 수행합니다.
예시
이 예시 에서는 app
데이터베이스 의 inventory
이라는 샤딩되지 않은 컬렉션 을 shard02
샤드 로 이동합니다.
sh.moveCollection( "app.inventory", "shard02" )
사용 가능한 샤드 ID 목록을 가져오려면 sh.status()
를 실행 합니다. 자세한 내용은 sh.status() 출력을 참조하세요.