Apache Cassandra jest zbudowany w celu zapewnienia wysokiej dostępności we wszystkich środowiskach. Oznacza to, że jeśli pojedyncze lub wiele węzłów z klastrem są niedostępne, pozostałe węzły w klastrze będą obsługiwać żądane operacje.
Jednak gdy niedostępne węzły stają się osiągalne, muszą wiedzieć, jakie operacje przegapili w klastrze. Dlatego Apache Cassandra używa funkcji podpowiedzi do powiadomienia węzłów wszystkich funkcji, których przegapili, gdy są niedostępne. Chociaż wskazówki mogą powiadomić o brakujących operacjach, nie gwarantuje pełnej spójności danych w klastrze. Ta niespójność może prowadzić do utraty danych, zwłaszcza jeśli aktywny klaster pomnoża operacje CRUD.
Aby zapobiec utratę danych, musisz wykonać naprawy danych, umożliwiając węzłom synchronizację danych w klastrze z zaktualizowanymi informacjami.
W tym samouczku odkryjesz, jak ręcznie wykonywać naprawy w klastrze Cassandra za pomocą narzędzia NodeTool.
Rodzaje napraw w Cassandra
Cassandra obsługuje dwa główne rodzaje napraw:
Naprawy przyrostowe
Domyślnie Cassandra wykonuje stopniową naprawę. Ta naprawa naprawia tylko dane, które zmieniły się od poprzedniej naprawy. Jest to mniej intensywne i bardzo przydatne, gdy regularnie wykonujesz naprawy.
Jedną z wad przyrostowych napraw jest to, że gdy dane zostaną oznaczone jako naprawa, Cassandra nie będzie próbował go ponownie naprawić. Może to prowadzić do utraty danych, zwłaszcza jeśli naprawa stanie się uszkodzona.
Pełne naprawy
Z drugiej strony, pełne naprawy są bardzo intensywne zasobów, szczególnie na operacjach dysków i sieci we/wy. Jednak wykonują naprawy danych w klastrze, synchronizując prawidłowe, aktualne informacje.
Moglibyśmy wydać cały artykuł na różne rodzaje napraw cassandra i tego, jak Cassandra radzi sobie z naprawami. Przejdźmy jednak do głównego dania artykułu.
Polecenie naprawy NodeTool
Aby wykonać naprawę danych w klastrze Cassandra, używamy polecenia naprawy NodeTool. Składnia polecenia i opcje są jak pokazano:
W zależności od określonej metody polecenie naprawy wykonuje pełną lub przyrostową naprawę jednego lub więcej węzłów.
Jak wykonać pełną naprawę w klastrze Cassandra
W tej sekcji przyjrzyjmy się, jak możemy wykonać pełną naprawę w klastrze Cassandra.
Uwaga: Aby najlepiej zilustrować pełną naprawę, uruchom polecenia w tym samouczku w klastrze z trzema lub więcej węzłami.
Krok 1: Utwórz przestrzeń klawiszową z współczynnikiem replikacji 3 (lub dla liczby dostępnych węzłów).
cassandra@cqlsh> Utwórz rozwój kluczy
… Z replikacją = 'class': „ProsteStrategy”, „Replikacja_factor”: 3;
Krok 2: Utwórz tabelę i dodaj przykładowe dane.
cassandra@cqlsh: rozwój> Utwórz tabelę t (id int, nazwa tekst, wiek int, klucz podstawowy (id));
Krok 3: Dodaj przykładowe dane.
cassandra@cqlsh: rozwój> Wstaw do t (id, nazwa, wiek) (0, „user1”, 2);
cassandra@cqlsh: rozwój> Wstaw do t (id, nazwa, wiek) (1, „user2”, 3);
cassandra@cqlsh: rozwój> Wstaw do t (id, nazwa, wiek) (2, „user3”, 5);
Krok 4: Uzyskaj dane przechowywane w tabeli.
cassandra@cqlsh: rozwój> Wybierz * z t;
Wyjście:
Id | Wiek | nazwa
----+-----+-------
1 | 3 | Użytkownik2
0 | 2 | Użytkownik 1
2 | 5 | User3
Krok 5: Zaktualizuj przestrzeń klawiszową, aby uwzględnić 4 repliki.
cassandra@cqlsh: rozwój> Zmieniasz rozwój kluczy
… Z replikacją = 'class': „ProsteStrategy”, „Replikacja_factor”: 4;
Zwiększenie liczby replików naśladuje działanie węzła w klastrze spadającym i wracającym.
Zwiększenie współczynnika replikacji powinno przekazać wiadomość w celu wykonania naprawy danych.
Krok 6: Wykonaj pełną naprawę danych jako:
$ NodeTool Repair -Fulll Development
Poprzednie polecenie wykonuje pełną naprawę wszystkich tabel w określonym miejscu na klawisze. Aby naprawić tylko jedną tabelę, możemy uruchomić następujące polecenie:
$ NodeTool Repair -Fulll Development t
Powinno to naprawić tylko stół „t” w kluczu.
Aby wyświetlić status naprawy, możesz użyć polecenia TPSTATS:
$ NodeTool TPStats
Wniosek
W tym artykule nauczyłeś się wykonywać pełną naprawę Cassandry za pomocą narzędzia NodeTool.
Dziękuje za przeczytanie!