2016-09-26 3 views
1

우리는 각각 2 개의 노드가있는 cassandra 클러스터에 대해 3 개의 영역을 가지고 있었고 완전히 6이었습니다. 그런 다음 클러스터에 12 개의 카산드라 노드가 완전히 추가 된 3 개의 영역이 추가되었습니다. 노드를 추가 한 후 복제 요소를 업데이트하고 노드 도구 복구를 시작했습니다. 그러나이 명령은 48 시간 이상 걸려 있고 아직 끝나지 않았습니다. 로그 중 1 개 또는 2 개를 살펴보면 일부 CF가 완전히 동기화되지 않기 때문에 AntiEntropySessions가 보류 중입니다. 모든 AntiEntropySessions는 모든 CF의 모든 노드에서 Merkle 트리를 성공적으로 가져옵니다. 그러나 일부 복구는 일부 CF의 경우 일부 노드가 완료되지 않으므로 보류중인 AntiEntropySessions로 이어지고 복구가 중단됩니다.Cassandra : 매달려있는 노드 도구 복구

우리는 Cassandra 1.1.12를 사용하고 있습니다. 우리는 지금 카산드라를 업그레이드 할 수 없을 것입니다. 노드를 다시 시작하고 다시 복구를 시작했지만 여전히 중단됩니다. 수리 도중 활성화 된 처음 3 개의 영역에서 자주 읽고 쓰는 CF 하나가 항상 완전히 동기화되지 않는 것을 확인했습니다.

수리를 실행하는 동안 어떤 CF에서도 읽기/쓰기가 없어야합니다. 또는 여기에 문제가 될 수있는 사항을 제안 해주세요.

답변

1

카산드라 1.1은 매우 오래 되었기 때문에 정확한 문제는 기억하기 어렵지만 스트리밍에 문제가있어 중단 될 수 있습니다. 일부 원인은 읽기 시간이 초과되었거나 연결이 재설정 된 것과 같습니다. 당신이 1.1.11을 지났으므로 하위 범위의 수리를 시도해보십시오.

한 시간 내에 복구 할 수있는 적절한 토큰 범위를 찾으십시오 (완료 할 때까지 작고 작은 범위를 계속 실행하십시오). 몇 시간의 시간 초과를 설정하십시오. 일부 수리가 실패 할 것으로 예상 (시간 초과)하므로 완료 될 때까지 다시 시도하십시오. 많은 재 시도 후에도 그것을 얻을 수 없다면, 그 서브 범위를 더 작게 만들지 만, 심지어 훨씬 더 나빠질 파티션을 매우 넓게 (nodetool cfstats으로 확인할 수 있습니다) 파티션을 가지고 있다면 문제가 발생할 수 있습니다.

일단 수리가 완료되면 미친 듯이 업그레이드하십시오.

+0

감사합니다. 하위 범위 복구는 특정 토큰 범위를 수정하는 데 도움이되었습니다. –

관련 문제