Odpowiedzi:
Przeglądając dokumentację, trudno mi znaleźć odniesienie do tego, ale krótka odpowiedź brzmi „tak”, musisz uruchomić nodetool repair
na 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 -pr
flagą, 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.
-pr
na każdym węźle, obejmie on całą przestrzeń klawiszową.
-pr
flagą.
To, jak się zachowuje, zależy od konfiguracji, używanej wersji Cassandry i sposobu uruchomienia polecenia naprawy.
Jeśli uruchomisz tylko jeden nodetool repair
wę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 repair
polecenie 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 -hosts
i -dc
. Dodatkowo, jeśli użyjesz -pr
flagi (która wybierze tylko pierwszy zakres tokenów, za który odpowiedzialny jest węzeł), będziesz musiał uruchomić się nodetool repair -pr
na wszystkich węzłach w klastrze.
Inną flagą, o której należy pamiętać, jest -inc
flaga, 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 repair
domyś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 repair
dział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ć -pr
opcję 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 repair
w jednym węźle nie jest wystarczające do naprawy wszystkich zreplikowanych danych we wszystkich węzłach we wszystkich konfiguracjach. Uruchomienie nodetool repair
w jednym węźle naprawi tylko dane replikowane w tym węźle. (Dodanie -pr
opcji 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 repair
na dodatkowych węzłach.
-pr
każdym węzłem, czy obejmie to całą przestrzeń klucza?