Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / /

removeShard

이 페이지의 내용

  • 호환성
  • 구문
  • 행동
  • 예시
removeShard

샤딩된 클러스터 에서 샤드 를 제거합니다. 을(를)removeShard 실행 하면 MongoDB 는 밸런서 를 사용하여 샤드 의 청크를 클러스터 의 다른 샤드로 이동하여 샤드를 비웁니다. 샤드 가 비워지면 MongoDB 는 클러스터 에서 샤드 를 제거합니다.

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

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

중요

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

실행하려면 mongos 인스턴스에서 admin 데이터베이스에 대해 명령을 실행합니다.

db.adminCommand( { removeShard : <shardToRemove> } )

샤드 제거 중에는 cluster 데이터를 백업할 수 없습니다.

진행 중인 removeShard 작업이 두 개 이상 있을 수 있습니다.

authorization 을(를) 활성화한 경우 clusterManager 역할 또는 removeShard 작업을 포함하는 역할이 있어야 합니다.

cluster의 각 데이터베이스에는 프라이머리 샤드가 있습니다. 제거하려는 샤드가 클러스터 데이터베이스 중 하나의 프라이머리 샤드이기도 한 경우, 샤드에서 모든 데이터를 마이그레이션한 후 데이터베이스를 수동으로 새 샤드로 이동해야 합니다. 자세한 내용은 movePrimary 명령 및 기존 샤드 cluster에서 샤드 제거 를 참조하세요.

청크 분포가 균일하지 않은 클러스터에서 샤드를 제거하면 밸런서는 먼저 드레이닝 샤드에서 청크를 제거한 다음 나머지 불균등 청크 분포를 조정합니다.

다음도 참조하세요.

mongos removeShard 명령의 쓰기 고려 를 "majority" 로 변환합니다.

샤드 제거로 인해 열려 있던 변경 스트림 커서가 닫힐 수 있으며, 닫힌 변경 스트림 커서는 완전히 재개되지 않을 수 있습니다.

mongosh 에서 removeShard 작업은 다음과 유사합니다.

db.adminCommand( { removeShard : "bristol01" } )

bristol01 을 제거할 샤드의 이름으로 바꿉니다. removeShard 를 실행하면 다음과 유사한 메시지와 함께 명령이 반환됩니다.

{
"msg" : "draining started successfully",
"state" : "started",
"shard" : "bristol01",
"note" : "you need to drop or movePrimary these databases",
"dbsToMove" : [
"fizz",
"buzz"
],
"ok" : 1,
"operationTime" : Timestamp(1575398919, 2),
"$clusterTime" : {
"clusterTime" : Timestamp(1575398919, 2),
"signature" : {
"hash" : BinData(0,"Oi68poWCFCA7b9kyhIcg+TzaGiA="),
"keyId" : NumberLong("6766255701040824328")
}
}
}

밸런서는 bristol01 이라는 이름의 샤드의 청크를 cluster의 다른 샤드로 마이그레이션("배출")하기 시작합니다. 이러한 마이그레이션은 cluster에 과도한 부하를 주지 않기 위해 느리게 수행됩니다.

출력에는 bristol01프라이머리 샤드 인 데이터베이스를 나타내는 dbsToMove 필드가 포함됩니다. 샤드에서 모든 청크를 제거한 후에는 데이터베이스에 대해 movePrimary 하거나 이러한 데이터베이스를 삭제해야 합니다.

참고

제거하려는 샤드가 데이터베이스의 프라이머리 샤드가 아닌 경우 dbsToMove 배열은 비어 있고 removeShard 는 개입 없이 마이그레이션을 완료할 수 있습니다.

명령을 다시 실행하면 removeShard 가 프로세스의 현재 상태를 반환합니다. 예를 들어, 연산이 ongoing 상태인 경우 명령은 다음과 유사한 출력을 반환합니다.

{
"msg" : "draining ongoing",
"state" : "ongoing",
"remaining" : {
"chunks" : NumberLong(2),
"dbs" : NumberLong(2),
"jumboChunks" : NumberLong(0)
},
"note" : "you need to drop or movePrimary these databases",
"dbsToMove" : [
"fizz",
"buzz"
],
"ok" : 1,
"operationTime" : Timestamp(1575399086, 1655),
"$clusterTime" : {
"clusterTime" : Timestamp(1575399086, 1655),
"signature" : {
"hash" : BinData(0,"XBrTmjMMe82fUtVLRm13GBVtRE8="),
"keyId" : NumberLong("6766255701040824328")
}
}
}

출력에서 remaining 필드에는 다음 필드가 포함됩니다.

필드
설명

chunks

현재 샤드에 남아 있는 청크의 총 개수입니다.

dbs

프라이머리 샤드가 샤드인 데이터베이스의 총 개수입니다. 이러한 데이터베이스는 dbsToMove 출력 필드에 지정되어 있습니다.

jumboChunks

전체 chunks 개수 중 점보인 숫자입니다.

jumboChunks 가 0보다 큰 경우 샤드에 jumboChunks 만 남을 때까지 기다립니다. 점보 청크만 남으면 배출이 완료되기 전에 점보 플래그를 수동으로 지워야 합니다. jumbo 플래그 지우기를 참조하세요.

jumbo 플래그를 지우면 밸런서가 이러한 청크를 마이그레이션할 수 있습니다. 마이그레이션 절차에 대한 자세한 내용은 청크 마이그레이션 절차를 참조하세요.

removeShard 명령의 상태를 계속 확인합니다(예: 남아 있는 청크 수가 0 가 될 때까지 명령을 다시 실행합니다.

{
"msg" : "draining ongoing",
"state" : "ongoing",
"remaining" : {
"chunks" : NumberLong(0), // All chunks have moved
"dbs" : NumberLong(2),
"jumboChunks" : NumberLong(0)
},
"note" : "you need to drop or movePrimary these databases",
"dbsToMove" : [
"fizz",
"buzz"
],
"ok" : 1,
"operationTime" : Timestamp(1575400343, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1575400343, 1),
"signature" : {
"hash" : BinData(0,"9plu5B/hw4uWAgEmjjBP3syw1Zk="),
"keyId" : NumberLong("6766255701040824328")
}
}
}

샤드에서 모든 청크를 제거한 후 dbsToMove 이 있는 경우 해당 데이터베이스에 대해 movePrimary 을 수행하거나 데이터베이스를 삭제(관련 데이터 파일 삭제)할 수 있습니다.

밸런서가 샤드에서 모든 청크 이동을 완료하고 dbsToMove 처리를 완료하면 removeShard 작업을 완료할 수 있습니다. removeShard 를 다시 실행하면 다음과 유사한 출력이 반환됩니다.

{
"msg" : "removeshard completed successfully",
"state" : "completed",
"shard" : "bristol01",
"ok" : 1,
"operationTime" : Timestamp(1575400370, 2),
"$clusterTime" : {
"clusterTime" : Timestamp(1575400370, 2),
"signature" : {
"hash" : BinData(0,"JjSRciHECXDBXo0e5nJv9mdRG8M="),
"keyId" : NumberLong("6766255701040824328")
}
}
}

돌아가기

refineCollectionShardKey

이 페이지의 내용