동일한 샤드 키로 리샤딩
MongoDB 8.0부터는 다운타임이나 워크로드 에 영향 없이 동일한 샤드 키 리샤딩하여 데이터를 이동할 수 있습니다. 이를 통해 다음을 수행할 수 있습니다.
Reshard to Shard 기술을 사용하여 컬렉션 을 샤드 하고 해당 데이터를 모든 관련 샤드에 배포합니다.
새 샤드를 더 빠르게 추가
더 빠르게 샤드 제거
컬렉션을 다시 작성하여 디스크 공간 확보
MongoDB 8.0부터 리샤딩은 기본 순서 스캔을 사용하여 데이터를 읽습니다. 리샤딩은 먼저 모든 데이터를 복제한 다음 관련 인덱스를 빌드하므로 리샤딩 프로세스 속도가 수십 배 향상됩니다.
명령 구문
forceRedistribution
를 true
로 설정하다 상태에서 reshardCollection
명령을 사용하여 동일한 키로 리샤딩할 수 있습니다.
reshardCollection
명령은 다음과 같은 구문을 가집니다:
db.adminCommand( { reshardCollection: "<database>.<collection>", key: { "<shardkey>" }, unique: <boolean>, numInitialChunks: <integer>, collation: { locale: "simple" }, zones: [ { min: { "<document with same shape as shardkey>" }, max: { "<document with same shape as shardkey>" }, zone: <string> | null }, ], forceRedistribution: <bool> } )
자세한 내용은 reshardCollection
를 참조하세요.
사용 사례
리샤딩은 다운타임이나 워크로드 에 영향 없이 데이터를 이동하는 전략입니다. Reshard to Shard 기술을 사용하여 컬렉션 을 샤드 하고 모든 샤드에 데이터를 배포합니다.
리샤딩을 사용하면 청크 마이그레이션보다 빠르게 모든 관련 샤드에 컬렉션을 배포할 수 있습니다. 모든 샤드에 쓰기를 병렬로 리샤딩하는 반면, 각 샤드 한 번에 하나 청크 마이그레이션 에만 참여할 수 있습니다. 리샤딩은 프로세스 끝날 때 이전 컬렉션 삭제합니다. 리샤딩이 끝날 때 고아 문서가 없습니다.
샤드로 리샤딩
리샤드 투 샤드 기술을 사용하면 리샤딩을 사용하여 컬렉션 을 샤드 하고 클러스터 의 모든 샤드에 데이터를 배포할 수 있습니다.
처음에 모든 크기의 컬렉션을 원하는 수의 샤드에 걸쳐 샤딩 경우 리샤드-샤딩 을 사용하는 것이 좋습니다. 배포서버 서버가 리소스 요구 사항을 충족하는 경우, 샤드 하려는 컬렉션 크기에 관계없이 Reshard to Shard 를 사용합니다.
행동
스토리지
이 공식을 사용하여 최소 oplog window 24 시간이라고 가정하고 컬렉션 크기와 인덱스 크기를 추가하여 리샤딩 작업에 필요한 저장 공간을 계산합니다.
Available storage required on each shard = [(collection size + index size) *2 ] / number of shards the collection will be distributed across.
예시 들어 4 샤드에 분산된 2TB 컬렉션 과 400GB 인덱스에는 샤드 당 최소 1.2TB의 사용 가능한 저장 필요합니다.
[ (2 TB + 400GB) * 2 ] / 4 shards = 1.2 TB / shard
클러스터 에 사용 가능한 저장 공간이 있는지 확인해야 합니다.
공간이 부족하거나 사용 가능한 I/O 헤드룸이 있는 경우 저장 크기를 늘려야 합니다. CPU 헤드룸이 충분하지 않은 경우 더 높은 인스턴스 크기를 선택하여 클러스터 확장하다 해야 합니다.
팁
MongoDB cluster Atlas 에서 호스팅되는 경우, Atlas UI 사용하여 저장, CPU 및 I/O 헤드룸 지표 검토 수 있습니다.
지연 시간
애플리케이션 리샤딩되는 컬렉션 컬렉션 쓰기를 차단하는 2초를 견딜 수 있는지 확인해야 합니다. 쓰기가 차단되면 애플리케이션 지연 시간 증가합니다. 워크로드 이 요구 사항을 수용할 수 없는 경우 청크 마이그레이션을 사용하여 클러스터 의 균형을 맞추세요.
추가 리소스 요구 사항
클러스터 는 다음과 같은 추가 요구 사항을 충족해야 합니다.
최소 oplog window 는 24 시간입니다.
I/O 용량 50% 미만입니다.
CPU 로드가 80% 미만입니다.