샤드 데이터 분포 분석
이 페이지의 내용
이 절차를 사용하여 샤딩된 데이터 분포를 분석 . 이 정보를 사용하여 클러스터 에 많은 양의 밸런싱이 있는지 확인할 수 있습니다.
이 작업에 관한 정보
이 절차에서는 다음을 수행할 수 있는 방법을 보여 줍니다.
클러스터 5.0 에서 6.0으로 업그레이드합니다.
단계를
$shardedDataDistribution
사용하여 클러스터 전체에서 샤딩된 데이터의 분포를 확인합니다.필요한 경우 밸런서 설정을 업데이트합니다.
시작하기 전에
업그레이드 프로세스 와 이 절차가 진행되는 동안 밸런서 꺼진 상태로 유지합니다. 새로운 밸런싱 정책에 따른 컬렉션의 균등성을 이해하면 밸런서 다시 켤 수 있습니다.
단계
클러스터 5.0 에서 6.0으로 업그레이드합니다.
클러스터 에서 으로 5.0 6.0 업그레이드 6.0 하려면 샤드 클러스터를 으로 업그레이드를 참조하세요.
mongosh 사용하여 mongos 에 연결합니다.
클러스터의 모든 mongos
에 연결할 수 있습니다.
클러스터 의 데이터 분포를 분석합니다.
컬렉션의 데이터 분포가 밸런싱에 어떤 영향 이해하려면 $shardedDataDistribution
집계 단계를 사용합니다.
샤딩된 데이터 배포 지표를 모두 반환하려면 다음을 실행합니다.
db.aggregate([ { $shardedDataDistribution: { } } ])
출력 예시:
[ { "ns": "test.names", "shards": [ { "shardName": "shard-1", "numOrphanedDocs": 0, "numOwnedDocuments": 6, "ownedSizeBytes": 366, "orphanedSizeBytes": 0 }, { "shardName": "shard-2", "numOrphanedDocs": 0, "numOwnedDocuments": 6, "ownedSizeBytes": 366, "orphanedSizeBytes": 0 } ] } ]
가 가장 큰 샤드 ownedSizeBytes
와 이 가장 적은 샤드 간의 차이가 ownedSizeBytes
마이그레이션 임계값 이내인 경우 컬렉션 밸런싱된 것으로 간주됩니다. 이러한 컬렉션에 대해 밸런서 활성화된 경우 마이그레이션을 실행하지 않습니다.
(선택사항)6.0 에서 밸런서 구성합니다.
컬렉션 이 불균형하고 밸런서 동작을 제어하려는 경우 다음 방법 중 하나 또는 둘 다를 사용할 수 있습니다:
밸런싱 창 수정하여밸런서 특정 시간에만 활성화되도록 구성합니다.
컬렉션에서 밸런서 비활성화하여 밸런싱 작업을 특정 컬렉션으로 제한합니다.
밸런싱 기간 수정
config 데이터베이스 로 전환합니다.
다음 명령을 실행하여
config
데이터베이스 로 전환합니다.use config 밸런싱 창 시작 및 종료 시간을 설정합니다.
활성 창 설정하다 하려면 메서드를 사용합니다.
updateOne()
db.settings.updateOne( { _id: "balancer" }, { $set: { activeWindow : { start : "<start-time>", stop : "<stop-time>" } } }, { upsert: true } ) 밸런싱 창 의 시작과 끝 경계를 지정하는 두 자리 시간 및 분 값(즉,
HH:MM
)을 사용하여<start-time>
및<end-time>
을(를) 시간 값으로 바꿉니다.HH
값의 경우00
부터23
까지의 시간 값을 사용하세요.MM
값의 경우00
에서59
까지의 분 단위 값을 사용하세요.
자체 관리 샤딩된 클러스터의 경우, MongoDB config 서버 복제본 세트 에 있는 프라이머리 멤버의 시간대 구역 기준으로 시작 및 중지 시간을 평가합니다.
Atlas 클러스터의 경우, MongoDB는 UTC 표준 시간대를 기준으로 시작 및 중지 시간을 평가합니다.
참고
밸런서 창은 하루 동안 삽입된 모든 데이터의 마이그레이션을 완료하기에 충분해야 합니다.
데이터 삽입 속도는 활동과 사용 패턴에 따라 변경될 수 있으므로, 선택한 밸런싱 창 배포서버 의 요구 사항을 지원 에 충분한지 확인하세요.
( 선택사항) 범위 삭제가 동기식인지 확인합니다.
범위 삭제를 밸런싱 창 으로 제한하려는 경우에만 이 단계를 사용합니다.
기본값 으로 밸런서 다음 청크 마이그레이션 시작하기 전에 진행 중인 마이그레이션의 삭제 단계가 완료될 때까지 기다리지 않습니다. 삭제 단계에서 다음 청크 마이그레이션 의 시작을 차단 하도록 하려면
_waitForDelete
를 true로 설정하다 수 있습니다.config
데이터베이스 의settings
컬렉션 에서_waitForDelete
값을 업데이트합니다. 예시 들면 다음과 같습니다.use config db.settings.updateOne( { "_id" : "balancer" }, { $set : { "_waitForDelete" : true } }, { upsert : true } )
특정 컬렉션에 대한 밸런싱 비활성화
기본값 으로 모든 컬렉션 밸런싱이 활성화되어 있습니다.
특정 컬렉션 에 대한 밸런싱을 mongos
mongosh
비활성화하려면 sh.disableBalancing()
셸 사용하여 에 연결하고 메서드를 호출합니다.
이 예시 students.grades
컬렉션 에서 밸런싱을 비활성화합니다.
sh.disableBalancing("students.grades")
메서드는 sh.disableBalancing()
컬렉션 의 전체 네임스페이스 매개변수로 허용합니다.
클러스터 에서 밸런서 다시 활성화합니다.
밸런서를 비활성화했다가 다시 활성화할 준비가 된 경우 이 절차를 따르세요:
밸런서를 활성화하려면 다음 작업 중 하나를 실행하세요:
mongosh
셸 에서 실행.sh.startBalancer() 참고
드라이버에서 밸런서를 활성화하려면 다음과 같이
admin
데이터베이스에서 balancerStart 명령을 사용합니다:db.adminCommand( { balancerStart: 1 } ) MongoDB 6.0.3부터 자동 청크 분할이 수행되지 않습니다. 이는 밸런싱 정책이 개선되었기 때문입니다. 자동 분할 명령이 여전히 존재하지만 작업을 수행하지 않습니다. 자세한 내용은 밸런싱 정책 변경을 참조하세요.
MongoDB 6.0.3 이전 버전에서
sh.startBalancer()
는 샤딩된 클러스터에 대한 자동 분할도 활성화합니다.