문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

movePrimary

이 페이지의 내용

  • 호환성
  • 고려 사항
  • 추가 정보
movePrimary

샤드 클러스터 에서 movePrimary 는 데이터베이스에서 샤딩되지 않은 모든 컬렉션을 보유하는 프라이머리 샤드 를 재할당합니다. movePrimary 는 먼저 클러스터 메타데이터의 프라이머리 샤드를 변경한 다음 샤딩되지 않은 모든 컬렉션을 지정된 샤드 로 마이그레이션합니다. 다음 형식의 명령을 사용합니다.

db.adminCommand( { movePrimary: <databaseName>, to: <newPrimaryShard> } )

예를 들어, 다음 명령은 프라이머리 샤드를 test 에서 shard0001 로 이동합니다.

db.adminCommand( { movePrimary : "test", to : "shard0001" } )

명령이 반환되면 데이터베이스의 프라이머리 샤드 위치가 지정된 샤드로 전환됩니다. 샤드를 완전히 서비스 해제하려면 removeShard 명령을 사용합니다.

movePrimarymongos 인스턴스에만 사용할 수 있는 관리 명령입니다.

경고

movePrimary 을(를) 시작한 후에는 명령이 완료될 때까지 해당 데이터베이스의 샤딩되지 않은 컬렉션에 대해 읽기 또는 쓰기 작업을 수행하지 마세요 . 마이그레이션 중에 해당 컬렉션에 대해 실행된 읽기 또는 쓰기 작업으로 인해 마이그레이션 작업이 실패하거나 데이터가 손실되는 등 예기치 않은 동작이 발생할 수 있습니다.

이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.

  • MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스

참고

이 명령은 서버리스 인스턴스 에서는 지원되지 않습니다 . 자세한 내용은 지원되지 않는 명령을 참조하세요.

mongosmovePrimary 에 대해 "majority" 쓰기 고려를 사용합니다

movePrimary 데이터베이스의 크기와 네트워크 상태 또는 시스템 리소스와 같은 요인에 따라 완료하는 데 상당한 시간이 걸릴 수 있습니다. 마이그레이션 중에 데이터베이스에 대해 실행된 읽기 또는 쓰기 작업으로 인해 마이그레이션 작업의 잠재적 실패 또는 데이터 손실과 같은 예기치 않은 동작이 발생할 수 있습니다.

애플리케이션이 클러스터에 대한 모든 읽기 및 쓰기를 중지하는 유지 관리 기간을 예약하는 것이 좋습니다. 계획된 다운타임 동안 movePrimary 를 실행하면 데이터베이스의 샤딩되지 않은 컬렉션에 대한 읽기 또는 쓰기 인터리빙으로 인해 정의되지 않은 동작이 발생할 위험을 완화할 수 있습니다.

movePrimary 대상 샤드에 충돌하는 컬렉션 네임스페이스가 포함된 경우 실패합니다. 예를 들면 다음과 같습니다.

  1. 관리자가 movePrimary 를 발행하여 hr 데이터베이스의 프라이머리 샤드를 변경합니다.

  2. movePrimary 가 해당 collection을 이동하는 동안 사용자 또는 애플리케이션이 hr 의 샤딩되지 않은 collection에 대해 쓰기 작업을 실행합니다. 쓰기 작업은 원래 프라이머리 샤드에 collection을 생성합니다.

  3. 나중에 관리자가 movePrimary 를 실행하여 hr 데이터베이스의 원래 프라이머리 샤드를 복원합니다.

  4. movePrimary 인터리빙 쓰기 작업에서 남겨진 충돌 네임스페이스로 인해 실패합니다.

movePrimary 작업의 일부로 대상 샤드는 프라이머리 샤드가 된 후 마이그레이션된 collection의 인덱스를 다시 작성해야 합니다. collection당 인덱스 수와 인덱싱할 데이터의 양에 따라 상당한 시간이 걸릴 수 있습니다.

인덱스 빌드 프로세스에 대한 자세한 내용 은 채워진 collection 에 대한 인덱스 빌드를 참조하세요.

전체 절차 는 기존 샤드 클러스터에서 샤드 제거를 참조하세요.

← moveChunk