모든 노드에서 nodetool repair를 실행해야합니까?


12

당신은 실행해야합니까 nodetool repair클러스터의 모든 노드에, 또는 당신은 단지 하나 개의 노드에서 실행해야합니까, 거기에서 카산드라는 나머지를 다룰 것인가?

답변:


9

설명서를 살펴보면 이에 대한 참조를 찾는 데 어려움을 겪고 있지만 짧은 대답은 "예"이며 nodetool repair클러스터의 각 노드에서 실행 해야합니다. 내가 찾을 수있는 가장 가까운 것은 노드 복구에 대한 설명서 이며, 한 번에 클러스터의 둘 이상의 노드에서 복구를 실행해서는 안된다는 것을 나타냅니다.

플래그를 사용하여 복구 를 실행할 수도 있습니다. 이 -pr플래그는 복구 작업을 현재 노드가 담당하는 첫 번째 토큰 범위로 제한합니다. 이것은 나머지 노드에서 실행될 때 작업 중복을 줄입니다.


-pr모든 노드에서 실행 하면 전체 키 공간을 포함합니까?
2rs2ts

1
@ 2rs2ts 예, -pr모든 노드에서 실행 하면 전체 키 공간을 포함합니다.
Aaron

1
알았어. 그러면 모든 노드에서 실행해야한다고 생각하지만 -pr플래그를 사용하여 시간을 절약 할 수 있습니다 .
2rs2ts

1
다른 답변에 소스를 추가했습니다. "정기적 인 복구 빈도에 대한 어려운 요구 사항은 gc_grace_seconds의 값입니다. 이 기간 내에 노드 에서 적어도 한 번 복구 작업을 실행하십시오 ." 노드 수리
Carl G

5

작동 방식은 구성, 사용하는 Cassandra 버전 및 repair 명령 실행 방법에 따라 다릅니다.

nodetool repair클러스터의 단일 노드 에서만 실행하면 해당 노드가 담당하는 모든 데이터 (토큰 범위)와 해당 데이터를 담당하는 다른 노드도 복구됩니다.

예를 들어, nodetool repair주어진 클러스터의 단일 노드에서 명령 을 실행하려는 경우 :

  • 복제 팩터가 3 인 3 노드 클러스터를 실행하는 경우 모든 노드가 모든 데이터를 소유하므로 모든 노드에 대해 복구가 수행됩니다.
  • 복제 팩터가 2 인 6 개의 노드 클러스터를 실행중인 경우 6 개의 노드 중 2 개에서만 데이터가 복구됩니다. 나머지 4 개 노드 중 2 개 이상에서 복구를 시작해야합니다.

즉, -hosts-dc플래그 를 사용하여 복구를 수행 할 호스트 및 데이터 센터를 정의 할 수 있습니다 . 또한 당신이 사용하는 경우 -pr당신이 실행해야합니다 (만 노드가 담당하는 첫 번째 토큰 범위를 선택할 것) 플래그 nodetool repair -pr모든 클러스터에 노드를.

명심해야 할 또 다른 플래그 -inc는 Cassandra 2.1에 포함 된 플래그입니다. 이 옵션은 새 데이터 (이전에 복구되지 않은 데이터) 만 복구합니다. 특히 자주 데이터를 삭제하는 경우이 방법을 사용할 때주의하십시오. ( 이것에 대한 자세한 내용 )

Cassandra에서 수리가 수행되는 기본 방법은 다를 수 있다는 점을 명심해야합니다. Cassandra 2.1 nodetool repair부터는 기본적으로 전체 순차적 복구를 수행합니다. 당신은 당신의 버전이하는 것을 찾아보고 싶을 것이다.

주제에 대한 자세한 내용은 다음을 참조하십시오.

https://www.datastax.com/dev/blog/repair-in-cassandra


2
여기에 유일한 좋은 대답
ruruskyi

2

아니요, 각 개별 노드에서 실행할 필요는 없습니다. nodetool repair노드 세트에서 실행되며 설명서에 명확하게 명시되어 있습니다 .

복구를 실행하려는 노드 또는 데이터의 일부를 제한 할 수 있습니다. 예를 들어, -pr파티 셔너 범위, 노드가 담당하는 범위에 대한 옵션을 제공 할 수 있지만 전체 클러스터에서 실행해야합니다. 그러나를 선택 -local하면 노드의 로컬 데이터 센터에있는 노드가 복구됩니다.


4
nodetool repair단일 노드에서 실행 하는 것만으로는 모든 구성의 모든 노드에서 모든 복제 된 데이터를 복구 할 수 없습니다. nodetool repair단일 노드에서 실행 하면 해당 노드에 복제 된 데이터 만 복구됩니다. 이 -pr옵션을 추가하면 이 노드가 첫 번째 복제 본인 데이터에 대한 복구가 제한됩니다. 그러나 클러스터에이 노드에서 복제되지 않은 데이터가있는 경우 nodetool repair추가 노드에서 실행해야합니다 .
Carl G

2
"-pr 옵션을 지정하지 않으면 Cassandra는 노드가 담당하는 모든 복제 범위를 복구합니다." nodetool repair docs (즉,이 노드가 복제를 담당하지 않는 데이터는 복구하지 않습니다.) "정기적 인 복구 빈도의 어려운 요구 사항은 gc_grace_seconds의 값입니다. 이 기간 내에 노드 에서 적어도 한 번 복구 작업을 실행하십시오 ." 노드 수리
Carl G
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.