답변:
설명서를 살펴보면 이에 대한 참조를 찾는 데 어려움을 겪고 있지만 짧은 대답은 "예"이며 nodetool repair
클러스터의 각 노드에서 실행 해야합니다. 내가 찾을 수있는 가장 가까운 것은 노드 복구에 대한 설명서 이며, 한 번에 클러스터의 둘 이상의 노드에서 복구를 실행해서는 안된다는 것을 나타냅니다.
플래그를 사용하여 복구 를 실행할 수도 있습니다. 이 -pr
플래그는 복구 작업을 현재 노드가 담당하는 첫 번째 토큰 범위로 제한합니다. 이것은 나머지 노드에서 실행될 때 작업 중복을 줄입니다.
-pr
모든 노드에서 실행 하면 전체 키 공간을 포함합니다.
-pr
플래그를 사용하여 시간을 절약 할 수 있습니다 .
작동 방식은 구성, 사용하는 Cassandra 버전 및 repair 명령 실행 방법에 따라 다릅니다.
nodetool repair
클러스터의 단일 노드 에서만 실행하면 해당 노드가 담당하는 모든 데이터 (토큰 범위)와 해당 데이터를 담당하는 다른 노드도 복구됩니다.
예를 들어, nodetool repair
주어진 클러스터의 단일 노드에서 명령 을 실행하려는 경우 :
즉, -hosts
및 -dc
플래그 를 사용하여 복구를 수행 할 호스트 및 데이터 센터를 정의 할 수 있습니다 . 또한 당신이 사용하는 경우 -pr
당신이 실행해야합니다 (만 노드가 담당하는 첫 번째 토큰 범위를 선택할 것) 플래그 nodetool repair -pr
에 모든 클러스터에 노드를.
명심해야 할 또 다른 플래그 -inc
는 Cassandra 2.1에 포함 된 플래그입니다. 이 옵션은 새 데이터 (이전에 복구되지 않은 데이터) 만 복구합니다. 특히 자주 데이터를 삭제하는 경우이 방법을 사용할 때주의하십시오. ( 이것에 대한 자세한 내용 )
Cassandra에서 수리가 수행되는 기본 방법은 다를 수 있다는 점을 명심해야합니다. Cassandra 2.1 nodetool repair
부터는 기본적으로 전체 순차적 복구를 수행합니다. 당신은 당신의 버전이하는 것을 찾아보고 싶을 것이다.
주제에 대한 자세한 내용은 다음을 참조하십시오.
아니요, 각 개별 노드에서 실행할 필요는 없습니다. nodetool repair
노드 세트에서 실행되며 설명서에 명확하게 명시되어 있습니다 .
복구를 실행하려는 노드 또는 데이터의 일부를 제한 할 수 있습니다. 예를 들어, -pr
파티 셔너 범위, 노드가 담당하는 범위에 대한 옵션을 제공 할 수 있지만 전체 클러스터에서 실행해야합니다. 그러나를 선택 -local
하면 노드의 로컬 데이터 센터에있는 노드가 복구됩니다.
nodetool repair
단일 노드에서 실행 하는 것만으로는 모든 구성의 모든 노드에서 모든 복제 된 데이터를 복구 할 수 없습니다. nodetool repair
단일 노드에서 실행 하면 해당 노드에 복제 된 데이터 만 복구됩니다. 이 -pr
옵션을 추가하면 이 노드가 첫 번째 복제 본인 데이터에 대한 복구가 제한됩니다. 그러나 클러스터에이 노드에서 복제되지 않은 데이터가있는 경우 nodetool repair
추가 노드에서 실행해야합니다 .
-pr
모든 노드에서 실행 하면 전체 키 공간을 포함합니까?