문제

우리는 두 개의 mongodb 파편을 설정했습니다. 각 샤드에는 마스터, 노예, 24 시간 노예 지연 슬레이브 및 중재자가 포함됩니다. 그러나 밸런서는 지연된 슬레이브가 마이그레이션되기를 기다리는 파편을 마이그레이션하지 못합니다. 밸런서 구성에서 _secondarythrottle을 False로 설정하려고 시도했지만 여전히 문제가 있습니다.

마이그레이션은 하루 동안 계속되어 실패한 것 같습니다 (로그에서 노예 메시지를 기다리는 일이 많이 있습니다). 결국 그것은 새로운 마이그레이션을 포기하고 시작합니다. 이 메시지는 3 명의 노예를 기다리고 있다고 말하지만 지연 슬레이브는 숨겨져 있고 prio 0이므로 그 중 하나를 기다려야합니다. 그리고 _secondarythrottle이 일했다면 어떤 노예를 기다리지 않아야합니까?

몇 달 동안 이와 같았으므로 구성이 모든 몽고스에 다시로드되어야합니다. 밸런서를 실행하는 몽고스 중 일부는 최근에 레스트타르였습니다.

누구든지 문제를 해결하는 방법을 알고 있습니까? 지연된 노예를 시작하기 전에 이러한 문제가 없었지만 그것은 단지 우리의 이론 일뿐입니다.

구성 :

{ "_id" : "balancer", "_secondaryThrottle" : false, "stopped" : false }

Shard1 마스터 프로세스에서 로그 :

MigrateThread] 경고 : 'xxx.xxx'{Shardkey : ObjectId ( '4FD2025AE087C37D32039A9E')} -> {SHARDKEY : OBJECTID ( '4FD2035AE087C37C37F014A79')}}}) 중요한 섹션에 들어가기 전에 따라 잡기위한 복제

Shard2 마스터 프로세스에서 로그 :

Tue 12 월 34 : 52 : 25.302 [Conn1369472] MoveChunk 데이터 전송 진행 : {active : true, ns : "xxx.xxx", from : "shard2/mongo2 : 27018, mongob2 : 27018", min : {shardkey : objectid ( '4FD2025AE087C37D32039A9E'))}, max : {shardkey : objectId ( '4FD2035AE087C37F04014A79'), SHARDKEYPATTORN : {ShardKey : 1.0}, 상태 : "Cathup", Count : 2273, Clonedby -and or Clonedby -4, CloneD : 2273, Clonedse. 0}, OK : 1.0} 내 MEM 사용 : 0

업데이트 : SlavedElay를 제거하면 밸런서가 다시 작동했음을 확인했습니다. 그들이 속도 덩어리에 올라 오자마자 움직였다. 따라서 문제는 SlavedElay와 관련이있는 것 같습니다. 또한 밸런서가 "Secondarythrottle": False로 실행된다는 것을 확인했습니다. 어쨌든 노예를 기다리는 것 같습니다.

Shard2 :

tue 12 월 10 일 11 : 44 : 25.423 [MigrateThread] 경고 : 'xxx.xxx'{shardkey : objectid ( '4ff1213ee087c3516b2f703f')} -> {shardkey : objectid ( '4ff12a5edddf2bb3 for') 52A6F089 : 81

tue 12 월 10 일 11 : 44 : 26.423 [MigrateThread] 중요한 섹션에 들어가기 전에 복제를 기다리는 대기

tue 12 월 10 일 11 : 44 : 27.423 [MigrateThread] 중요한 섹션에 들어가기 전에 복제를 기다리는 대기

tue 12 월 10 일 11 : 44 : 28.423 [MigrateThread] 중요한 섹션에 들어가기 전에 복제를 기다리는 대기

tue 12 월 10 일 11 : 44 : 29.424 [MigrateThread] 중요한 섹션에 들어가기 전에 복제를 기다리는 대기

tue 12 월 10 일 11 : 44 : 30.424 [MigrateThread] 중요한 섹션에 들어가기 전에 복제를 기다리는 대기

tue 12 월 10 일 11 : 44 : 31.424 [MigrateThread] 중요한 섹션에 들어가기 전에 복제를 기다리는 대기

Tue 12 월 10 일 11 : 44 : 31.424 [MigrateThread] 마이그레이트 커밋은 'xxx.xxx'{shardkey : 객체 ( '4ff1213ee087c3516b2f703f')} -> {shardkey : objectid ( '4ff12a5eddf2bb3b32ba5eddf2b32ba5eddf2b32df12a')

Tue 12 월 10 일 11 : 44 : 31.425 [MigrateThread] 'xxx.xxx'{shardkey : 객체 ( '4ff1213ee087c3516b2f703f')} -> {shardkey : objectid ( '4ff12a5edddf2b32b32b32b32b32dff1e7bea')

Tue 12 월 10 일 11 : 44 : 31.647 [MigrateThread] Migrate Commit은 'xxx.xxx'{shardkey : objectid ( '4ff1213ee087c3516b2f703f')} -> {shardkey : objectid ( '4ff12a5eddf2bb3b32ba5eddf2b32ba5eddf2b32df12a')

Tue 12 월 10 일 11 : 44 : 31.667 [MigrateThread] 'xxx.xxx'{shardkey : 객체 ( '4ff1213ee087c3516b2f703f')} -> {shardkey : objectid ( '4ff12a5edddf2b32b32b32b32b32dff1e7bea')

도움이 되었습니까?

해결책

밸런서는 대상 샤드의 복제 세트의 대부분이 소스 샤드에서 해당 문서의 삭제를 시작하기 전에 문서를 마이그레이션하도록하기를 올바르게 기다리고 있습니다.

문제는 복제 세트에 4 명의 멤버가 있다는 것입니다 (마스터, 슬레이브, 24 시간 노예 지연 슬레이브 및 중재자). 그것은 세 가지가 대다수라는 것을 의미합니다. 왜 당신이 중재인을 추가했는지 잘 모르겠지만, 당신이 그것을 제거하면, 두 사람은 다수가되고 밸런서는 지연된 노예를 기다릴 필요가 없습니다.

동일한 결과를 달성하는 대체 방법은 지연된 노예를 설정하는 것입니다. votes:0 재산 및 중재자를 세 번째 투표 노드로 남겨 둡니다.

다른 팁

어떤 버전을 실행하고 있습니까? 2.4.2 이하의 알려진 버그가 있으며 2.2.4 이하로 세트의 2 차 수의 잘못된 수를 유발합니다 (따라서 기본값을 만족시키는 것이 불가능합니다. W : 대다수 마이그레이션을 위해 쓰기). 이것은 버그입니다 (2.4.3+ 및 2.2.5+에서 수정) :

https://jira.mongodb.org/browse/server-8420

보조 스로틀을 끄는 것은 유효한 해결 방법이어야하지만 FlushRouterConfig 어떤 것도 mongos 프로세스 (또는 모든 것을 다시 시작하십시오 mongos 프로세스) 설정이 마이그레이션에 적용되는지 확인합니다. 업그레이드하기 전에 또 다른 잠재적 수정으로 Local.slaves 컬렉션을 떨어 뜨립니다 (재현 될 것입니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top