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

removeShard

이 페이지의 내용

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

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

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

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

중요

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

명령은 다음과 같은 구문을 가집니다:

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

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

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

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

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

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

다음도 참조하세요.

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

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

클러스터 가 DDL 작업(예: 컬렉션 을 수정하는 작업 reshardCollection)을 실행하는 동안 removeShard 를 실행 하는 경우, removeShard 는 동시 DDL 작업이 완료된 후에만 실행됩니다.

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 필드 가 포함됩니다. 밸런서 가 모든 청크를 이동한 후 그리고 모든 컬렉션이 moveCollection 만큼 이동한 후에는 데이터베이스 에 대해 movePrimary 해야 합니다.

명령을 다시 실행하면 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

이 페이지의 내용