Antworten:
Beim Durchsuchen der Dokumentation fällt es mir schwer, eine Referenz dafür zu finden, aber die kurze Antwort lautet "Ja", die Sie nodetool repair
auf jedem Knoten in Ihrem Cluster ausführen müssen. Am ehesten finde ich die Dokumentation zum Reparieren von Knoten, aus der hervorgeht, dass Sie nicht mehr als einen Knoten in Ihrem Cluster gleichzeitig reparieren sollten.
Sie können die Reparatur auch mit dem -pr
Flag ausführen , wodurch der Reparaturvorgang auf den ersten Tokenbereich beschränkt wird, für den der aktuelle Knoten verantwortlich ist. Dies verringert die Doppelarbeit beim Ausführen auf den verbleibenden Knoten.
-pr
auf jedem Knoten ausführen, werden alle Schlüsselbereiche abgedeckt.
-pr
Flagge Zeit sparen .
Wie es sich verhält, hängt von Ihrer Konfiguration, der verwendeten Version von Cassandra und der Ausführung des Reparaturbefehls ab.
Wenn Sie nur nodetool repair
auf einem einzelnen Knoten in einem Cluster ausführen , werden alle Daten (Tokenbereiche) repariert, für die dieser Knoten verantwortlich ist, sowie die anderen Knoten, die für diese Daten verantwortlich sind.
Wenn Sie den nodetool repair
Befehl beispielsweise auf einem einzelnen Knoten in einem bestimmten Cluster ausführen würden :
Es ist jedoch möglich zu definieren, welche Hosts und Rechenzentren mithilfe der Flags -hosts
und repariert werden sollen -dc
. Wenn Sie außerdem das -pr
Flag verwenden (das nur den ersten Token-Bereich auswählt, für den der Knoten verantwortlich ist), müssen Sie nodetool repair -pr
auf allen Knoten im Cluster ausgeführt werden.
Eine weitere zu beachtende -inc
Flagge ist die Flagge, die in Cassandra 2.1 enthalten war. Diese Option repariert nur neue Daten (Daten, die zuvor nicht repariert wurden). Seien Sie vorsichtig, wenn Sie sich darauf verlassen, insbesondere wenn Sie häufig Daten löschen. ( mehr dazu )
Beachten Sie außerdem, dass die Standardreparaturen in Cassandra variieren können. Ab Cassandra 2.1 wird beim Ausführen nur nodetool repair
standardmäßig eine vollständige sequenzielle Reparatur ausgeführt. Sie möchten nachschauen, was Ihre Version tut.
Weitere Informationen zum Thema:
Nein, Sie müssen nicht auf jedem einzelnen Knoten ausgeführt werden. nodetool repair
Läuft auf einer Gruppe von Knoten, was in der Dokumentation eindeutig angegeben ist .
Sie können die Knoten oder Teile von Daten einschränken, für die Sie die Reparatur ausführen möchten. Beispielsweise können Sie eine -pr
Option für den Bereich des Partitionierers angeben, den Bereich, für den der Knoten verantwortlich ist. Dies muss jedoch auf dem gesamten Cluster ausgeführt werden. Wenn Sie jedoch auswählen -local
, werden die Knoten im lokalen Datencenter des Knotens repariert.
nodetool repair
auf einem einzelnen Knoten reicht nicht aus, um alle replizierten Daten auf allen Knoten in allen Konfigurationen zu reparieren. Das Ausführen nodetool repair
auf einem einzelnen Knoten repariert nur Daten, die auf diesem Knoten repliziert wurden. (Durch Hinzufügen der -pr
Option wird die Reparatur auf Daten beschränkt, für die dieser Knoten das erste Replikat ist.) Wenn sich jedoch Daten in Ihrem Cluster befinden, die nicht auf diesem Knoten repliziert wurden, müssen Sie sie nodetool repair
auf zusätzlichen Knoten ausführen .
-pr
auf jedem Knoten mit starte, deckt das den gesamten Schlüsselbereich ab?