Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

중단된 청크 마이그레이션 문제 해결

샤드 클러스터는 청크 마이그레이션이 중단되거나 하나 이상의 청크가 점보가 되는 상황이 발생할 수 있습니다. 이 경우 밸런서 샤드 간에 데이터를 균등하게 배포할 수 없습니다. 이로 인해 리소스 사용률이 고르지 않고 클러스터 성능이 저하될 수 있습니다.

이 페이지에서는 지연된 청크 마이그레이션 및 점보 청크의 일반적인 원인과 이러한 상태를 진단하고 해결하는 단계를 설명합니다. 아래 단계를 완료한 후에도 문제가 지속되면 기술 지원팀 문의 .

클러스터 지연된 마이그레이션 또는 점보 청크의 영향을 받는지 확인합니다.

mongos 인스턴스 에서 실행.

sh.getBalancerState()

이 메서드가 true 을 반환하지만 데이터 분포가 여전히 고르지 않은 경우 추가 조사가 필요합니다.

자세한 밸런서 정보를 검토 할 수도 있습니다.

db.adminCommand({ balancerStatus: 1 })

샤드 간 청크 분포를 검토 하려면 실행.

sh.status(true)

다음을 찾습니다:

  • 샤드 당 청크 수의 큰 차이

  • 다음과 같이 표시된 청크 jumbo

참고

jumbo 로 표시된 청크 분할 되거나 크기가 줄어들 때까지 밸런서 에서 마이그레이션할 수 없습니다.

config 서버 로그에서 밸런싱 또는 청크 마이그레이션 과 관련된 항목을 검토합니다. 다음을 나타내는 메시지를 찾습니다.

  • 마이그레이션 재시도

  • 중단된 마이그레이션

  • 점보로 표시된 청크

  • 마이그레이션 커밋 또는 삭제 단계 중 실패

샤드 노드에서 다음에 대한 로그를 검토 .

  • 잠금 획득 시간 초과

  • 마이그레이션 영향을 미치는 복제 지연

  • 디스크 공간 오류

  • 마이그레이션 단계 실패

청크 구성된 청크 크기를 초과하면 점보가 되며 자동으로 분할 할 수 없습니다.

mongos에서:

sh.status(true)

jumbo(으)로 레이블이 지정된 청크를 찾습니다.

분할 가능한 청크는 여러 개의 고유한 샤드 키 값을 포함하며 분할 할 수 있습니다. 분할 가능한 점보 청크 해결하려면 다음과 같이 수동으로 분할 .

sh.splitAt("database.collection", { shardKeyField: <value> })

그런 다음 필요한 경우 밸런서 다시 시작합니다.

sh.startBalancer()

수동 분할이 적절한 경우를 학습 샤드 클러스터의 청크 분할을 참조하세요.

분할할 수 없는 청크는 단일의 고유한 샤드 키 값 나타내며 분할 할 수 없습니다. 분할할 수 없는 점보 청크 해결하려면 다음을 수행합니다.

점보 청크 확인에 대한 자세한 jumbo 내용은 플래그 지우기를 참조하세요.

샤드 키 카디널리티 가 낮거나 단조롭게 증가하는 패턴 따르는 경우 청크가 고르지 않게 증가하여 균형을 맞추지 못할 수 있습니다.

완화하려면 다음을 수행합니다.

  • 컬렉션 에서 사용하는 샤드 키 패턴 검토합니다.

  • 대부분의 쓰기가 좁은 샤드 키 범위 대상으로 하는지 확인합니다. 빈도가 높은 샤드 키 값으로 인해 쓰기가 단일 샤드 에 집중되는 경우 샤드 키 문제 해결을 참조하세요.

  • 더 균등하게 분산된 샤드 키 사용하여 컬렉션 리샤딩하는 것을 고려하세요.

권장사항 는 샤드 키 선택을 참조하세요.

밸런서 비활성화되면 청크 마이그레이션이 발생하지 않습니다.

밸런서 상태 확인합니다.

sh.getBalancerState()

비활성화된 경우 활성화 :

sh.startBalancer()

추가 밸런서 동작에 대한 자세한 내용은 샤드 클러스터 밸런서를 참조하세요.

장기 실행 작업, 인덱스 빌드 또는 과도한 쓰기 (write) 로드로 인해 청크 마이그레이션이 지연되거나 차단 될 수 있습니다.

경합을 줄이려면 다음을 수행합니다.

  • 장기 실행 작업을 식별합니다.

    db.currentOp()
  • 쓰기 (write) 활동이 적은 기간 동안 밸런싱을 예약합니다.

  • 모든 샤드에서 충분한 디스크 공간을 사용할 수 있는지 확인합니다.

참고

청크 마이그레이션 에는 데이터 복제와 삭제 단계가 포함됩니다. 디스크 공간이 부족하거나 복제 지연 높으면 이러한 단계가 지연될 수 있습니다.

문제를 해결한 후 다음을 수행합니다.

  • 청크 마이그레이션이 성공적으로 완료되었습니다.

  • jumbo로 표시된 청크가 남아 있지 않습니다.

  • 샤드 간 청크 분산이 더욱 균등해집니다.

  • 밸런서 활성 상태로 안정적으로 유지됩니다.

배포를 다시 확인합니다:

sh.status(true)

문제가 지속되면 기술 지원에 문의하기 전에 다음을 수집합니다.

  • 다음의 출력 sh.status(true)

  • 다음의 출력 db.adminCommand({ balancerStatus: 1 })

  • 관련 config 서버 로그

  • 관련 샤드 로그

  • 영향을 받는 컬렉션에 대한 샤드 키 정의

  • MongoDB 버전

  • 클러스터 토폴로지 설명

  • 샤드 당 청크 수 및 데이터 크기에 대한 sh.getShardedDataDistribution() 출력

돌아가기

샤드 추가 및 제거를 위한 리샤딩

이 페이지의 내용