Odpowiedzi:
Przeglądając dokumentację, trudno mi znaleźć odniesienie do tego, ale krótka odpowiedź brzmi „tak”, musisz uruchomić nodetool repairna każdym węźle w klastrze. Najbliższa mogę znaleźć dokumentację dotyczącą naprawy węzłów, która sugeruje, że nie należy uruchamiać naprawy więcej niż jednego węzła w klastrze na raz.
Możesz także uruchomić naprawę z -prflagą, która ogranicza operację naprawy do pierwszego zakresu tokena, za który odpowiada bieżący węzeł. Ogranicza to powielanie pracy podczas uruchamiania na pozostałych węzłach.
-prna każdym węźle, obejmie on całą przestrzeń klawiszową.
-prflagą.
To, jak się zachowuje, zależy od konfiguracji, używanej wersji Cassandry i sposobu uruchomienia polecenia naprawy.
Jeśli uruchomisz tylko jeden nodetool repairwęzeł w klastrze, spowoduje to naprawę wszystkich danych (zakresów tokenów), za które odpowiedzialny jest ten węzeł, a także innych węzłów, które są odpowiedzialne za te dane.
Na przykład, jeśli chcesz uruchomić nodetool repairpolecenie na pojedynczym węźle w danym klastrze:
To powiedziawszy, możliwe jest określenie, które hosty i centra danych będą przeprowadzać naprawy przy użyciu flag -hostsi -dc. Dodatkowo, jeśli użyjesz -prflagi (która wybierze tylko pierwszy zakres tokenów, za który odpowiedzialny jest węzeł), będziesz musiał uruchomić się nodetool repair -prna wszystkich węzłach w klastrze.
Inną flagą, o której należy pamiętać, jest -incflaga, która została uwzględniona w Cassandra 2.1. Ta opcja naprawi tylko nowe dane (dane, które nie zostały wcześniej naprawione). Zachowaj ostrożność, polegając na tym, szczególnie jeśli często usuwasz dane. ( więcej na ten temat )
Należy również pamiętać o tym, że domyślny sposób napraw w Cassandra może się różnić. Począwszy od Cassandry 2.1, po uruchomieniu nodetool repairdomyślnie wykonuje pełną sekwencyjną naprawę. Będziesz chciał sprawdzić, co robi Twoja wersja.
Więcej informacji na ten temat:
Nie, nie musisz uruchamiać każdego węzła. nodetool repairdziała na zbiorze węzłów, co jest wyraźnie określone w dokumentacji .
Możesz ograniczyć węzły lub część danych, na których chcesz uruchomić naprawę. Na przykład można podać -propcję zakresu partycjonera, zakresu, za który odpowiedzialny jest węzeł, ale będzie to musiało być uruchomione dla całego klastra. Ale jeśli wybierzesz -local, węzły w lokalnym centrum danych węzła zostaną naprawione.
nodetool repairw jednym węźle nie jest wystarczające do naprawy wszystkich zreplikowanych danych we wszystkich węzłach we wszystkich konfiguracjach. Uruchomienie nodetool repairw jednym węźle naprawi tylko dane replikowane w tym węźle. (Dodanie -propcji ogranicza naprawę do danych, dla których ten węzeł jest pierwszą repliką.) Ale jeśli masz w klastrze dane, które nie są replikowane w tym węźle, musisz uruchomić nodetool repairna dodatkowych węzłach.
-prkażdym węzłem, czy obejmie to całą przestrzeń klucza?