2016-09-12 3 views
0

지금 우리는 3 개의 노드가있는 DC가 있고 3의 복제가 있으면 노드를 폐기해야합니다. 내 복제를 2로 줄이거 나 폐기하는 노드는 3 개의 복제를 사용하여 두 노드 사이의 데이터를 조정합니다.복제> no.of 노드 (퇴역 노드 계획)

답변

1

노드를 제거해도 Cassandra 클러스터가 반드시 중단되지는 않지만 몇 가지 작업이 중지되도록 설정됩니다.

노드를 해제하지만, 복제 팩터 조정하지 않는 경우에 발생합니다 몇 가지 : 노드를 해제하기 때문에

  • 먼저 복제 요인에 대해 아무것도 그냥 변경되지됩니다. 그렇게하지 않으면 혼돈이 초래 될 것입니다.
  • 쿼리 (읽기 및 쓰기)가 BOTH 남아있는 기계에 응답해야하므로 3 기계, 덜 사용할 수 있습니다 ConsistencyLevel.QUORUM
  • 쿼리 참여 얻을 수 없기 때문에, 실패 ConsistencyLevel.ALL를 사용하는 것을 시도 쿼럼을 충족시키는 쿼리.

3 대의 기계와 3의 RF가 있기 때문에 모든 기계에 완전한 데이터 사본이 있음을 의미합니다. 노드 update your replication factor을 해제하고 나머지 두 노드에서 nodetool repair을 실행하십시오. 그렇게 한 후에는 잘 가야합니다.

+0

안녕하세요 @riwalk 이것은 내가 책임지고있는 데이터를 내 노드에서 폐기하는 경우 나에게 혼란 스럽습니다. 나머지 두 노드 사이에 배포해야합니다. 내 2 노드 사이에 분산되어 있다면 Consistency.ALL에서도 쿼리가 실패하는 이유는 무엇입니까? 데이터가 나머지 두 노드 사이에 분배되지 않으면 그 이유는 무엇입니까 ?? 2 노드의 나머지는 같은 데이터를 가지고 있기 때문에 그것은 무엇입니까 ?? 그런 다음 서비스 해제는 노드 하나에서 서비스를 중지하는 것과 같습니다. – user6288321

+0

@ user6288321, Consistency.ALL은 모든 복제본을 응답 받아야 함을 의미합니다. RF가 3 인 경우 성공적인 조회로 간주하기 전에 결과를 리턴하는 데 3 개의 서 v가 필요합니다. 물론 2 대의 기계에 대한 전체 데이터 세트가 있지만 2는 3이 아니며 "모두"를 사용하면 3 가지 응답이 필요합니다. – riwalk

0

내 2 센트 : 먼저 복제를 2로 변경하고 모든 노드에서 복구를 실행 한 다음 해제 할 노드에서 "nodetool decommission"을 실행하는 것이 좋습니다. 데이터가 돌아 다니기는하지만이 방법을 사용하면 아무 것도 작동하지 않아야합니다.