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 repairauf 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 -prFlag 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.
-prauf jedem Knoten ausführen, werden alle Schlüsselbereiche abgedeckt.
-prFlagge 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 repairauf 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 repairBefehl 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 -hostsund repariert werden sollen -dc. Wenn Sie außerdem das -prFlag verwenden (das nur den ersten Token-Bereich auswählt, für den der Knoten verantwortlich ist), müssen Sie nodetool repair -prauf allen Knoten im Cluster ausgeführt werden.
Eine weitere zu beachtende -incFlagge 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 repairstandardmäß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 repairLä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 -prOption 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 repairauf einem einzelnen Knoten reicht nicht aus, um alle replizierten Daten auf allen Knoten in allen Konfigurationen zu reparieren. Das Ausführen nodetool repairauf einem einzelnen Knoten repariert nur Daten, die auf diesem Knoten repliziert wurden. (Durch Hinzufügen der -prOption 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 repairauf zusätzlichen Knoten ausführen .
-prauf jedem Knoten mit starte, deckt das den gesamten Schlüsselbereich ab?