movePrimary
movePrimary
샤딩된 클러스터
movePrimary
는 데이터베이스 의 모든 비샤드 컬렉션을 보유하는 프라이머리 샤드 를 재할당합니다.movePrimary
는 먼저 클러스터 메타데이터 의 프라이머리 샤드 를 변경한 다음 샤딩되지 않은 모든 컬렉션을 지정된 샤드 로 마이그레이션합니다. 다음 형식의 명령을 사용합니다.db.adminCommand( { movePrimary: <databaseName>, to: <newPrimaryShard> } ) 예를 들어, 다음 명령은 프라이머리 샤드를
test
에서shard0001
로 이동합니다.db.adminCommand( { movePrimary : "test", to : "shard0001" } ) 명령이 반환되면 데이터베이스의 프라이머리 샤드 위치가 지정된 샤드로 전환됩니다. 샤드를 완전히 서비스 해제하려면
removeShard
명령을 사용합니다.movePrimary
은mongos
인스턴스에만 사용할 수 있는 관리 명령입니다.경고
movePrimary
을(를) 시작한 후에는 명령이 완료될 때까지 해당 데이터베이스의 샤딩되지 않은 컬렉션에 대해 읽기 또는 쓰기 작업을 수행하지 마세요 . 마이그레이션 중에 해당 컬렉션에 대해 실행된 읽기 또는 쓰기 작업으로 인해 마이그레이션 작업이 실패하거나 데이터가 손실되는 등 예기치 않은 동작이 발생할 수 있습니다.
호환성
이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
중요
이 명령은 서버리스 인스턴스에서는 지원되지 않습니다. 자세한 내용은 지원되지 않는 명령을 참조하세요.
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
고려 사항
mongos
는movePrimary
에 대해 "majority"
쓰기 고려를 사용합니다
유지 관리 기간 중 문제발생 movePrimary
movePrimary
데이터베이스의 크기와 네트워크 상태 또는 시스템 리소스와 같은 요인에 따라 완료하는 데 상당한 시간이 걸릴 수 있습니다. 마이그레이션 중에 데이터베이스에 대해 실행된 읽기 또는 쓰기 작업으로 인해 마이그레이션 작업의 잠재적 실패 또는 데이터 손실과 같은 예기치 않은 동작이 발생할 수 있습니다.
애플리케이션이 클러스터에 대한 모든 읽기 및 쓰기를 중지하는 유지 관리 기간을 예약하는 것이 좋습니다. 계획된 다운타임 동안 movePrimary
를 실행하면 데이터베이스의 샤딩되지 않은 컬렉션에 대한 읽기 또는 쓰기 인터리빙으로 인해 정의되지 않은 동작이 발생할 위험을 완화할 수 있습니다.
네임스페이스 충돌로 마이그레이션 방지
movePrimary
대상 샤드에 충돌하는 컬렉션 네임스페이스가 포함된 경우 실패합니다. 예를 들면 다음과 같습니다.
관리자가
movePrimary
를 발행하여hr
데이터베이스의 프라이머리 샤드를 변경합니다.movePrimary
가 해당 collection을 이동하는 동안 사용자 또는 애플리케이션이hr
의 샤딩되지 않은 collection에 대해 쓰기 작업을 실행합니다. 쓰기 작업은 원래 프라이머리 샤드에 collection을 생성합니다.나중에 관리자가
movePrimary
를 실행하여hr
데이터베이스의 원래 프라이머리 샤드를 복원합니다.movePrimary
인터리빙 쓰기 작업에서 남겨진 충돌 네임스페이스로 인해 실패합니다.
대상 샤드는 인덱스를 재구축해야 함
movePrimary
작업의 일부로 대상 샤드는 프라이머리 샤드가 된 후 마이그레이션된 collection의 인덱스를 다시 작성해야 합니다. collection당 인덱스 수와 인덱싱할 데이터의 양에 따라 상당한 시간이 걸릴 수 있습니다.
인덱스 빌드 프로세스에 대한 자세한 내용 은 채워진 collection 에 대한 인덱스 빌드를 참조하세요.
Change Streams이 있는 컬렉션 이동
MongoDB 부터 8.0 는movePrimary
변경 스트림 이 있는 컬렉션을 무효화 하지 않습니다. 컬렉션이 새 샤드 로 이동한 후에도 변경 스트림은 컬렉션에서 이벤트를 계속 읽을 수 있습니다.
이전 MongoDB 버전에서는 movePrimary
이(가) 컬렉션 변경 스트림을 무효화하므로 변경 스트림이 컬렉션에서 이벤트를 읽을 수 없습니다.
모든 MongoDB 버전에서 movePrimary
은 이동된 샤딩되지 않은 컬렉션의 UUID 를 업데이트합니다.
추가 정보
전체 절차 는 샤드 클러스터에서 샤드 제거를 참조하세요.