Risposte:
Esaminando la documentazione, ho difficoltà a trovare un riferimento per questo, ma la risposta breve è "sì", è necessario eseguire nodetool repair
su ciascun nodo del cluster. Il più vicino che riesco a trovare è la documentazione sulla riparazione dei nodi che suggerisce che non è necessario eseguire la riparazione su più di un nodo nel cluster alla volta.
È inoltre possibile eseguire la riparazione con il -pr
flag, che limita l'operazione di riparazione al primo intervallo di token di cui è responsabile il nodo corrente. Questo riduce la duplicazione del lavoro quando eseguito sui nodi rimanenti.
-pr
su tutti i nodi coprirà l'intero spazio / i chiavi.
-pr
bandiera.
Il modo in cui si comporta dipende dalla configurazione, dalla versione di Cassandra utilizzata e da come si esegue il comando di riparazione.
Se si esegue semplicemente nodetool repair
su un singolo nodo in un cluster, verranno ripristinati tutti i dati (intervalli di token) di cui è responsabile il nodo e anche gli altri nodi responsabili di tali dati.
Ad esempio, se dovessi eseguire il nodetool repair
comando su un singolo nodo in un determinato cluster:
Detto questo, è possibile definire quali host e data center eseguire riparazioni sull'uso dei flag -hosts
e -dc
. Inoltre se si utilizza la -pr
bandiera (che sarà solo scegliere la prima gamma di token il nodo è responsabile per) si dovrà eseguire nodetool repair -pr
su tutti i nodi del cluster.
Un'altra bandiera da tenere a mente è la -inc
bandiera, inclusa in Cassandra 2.1. Questa opzione riparerà solo i nuovi dati (dati che non sono stati precedentemente riparati). Fai attenzione quando ti affidi a questo, specialmente se elimini frequentemente i dati. ( altro su questo )
Un'altra cosa da tenere a mente è che il modo predefinito di eseguire le riparazioni in Cassandra può variare. A partire da Cassandra 2.1 durante l'esecuzione nodetool repair
, esegue per impostazione predefinita una riparazione sequenziale completa. Ti consigliamo di cercare ciò che fa la tua versione.
Per ulteriori informazioni sull'argomento:
No, non è necessario eseguire su ogni singolo nodo. nodetool repair
funziona su set di nodi, che è chiaramente indicato nella documentazione .
È possibile limitare i nodi o parte dei dati su cui si desidera eseguire la riparazione. Ad esempio, è possibile fornire -pr
un'opzione per l'intervallo del partizionatore, intervallo per il quale il nodo è responsabile, ma questo dovrà essere eseguito sull'intero cluster. Ma se si sceglie -local
, i nodi nel centro dati locale del nodo verranno riparati.
nodetool repair
su un singolo nodo non è sufficiente per riparare tutti i dati replicati su tutti i nodi in tutte le configurazioni. L'esecuzione nodetool repair
su un singolo nodo ripara solo i dati replicati su quel nodo. (L'aggiunta -pr
dell'opzione limita la riparazione ai dati per i quali questo nodo è la prima replica.) Se nel cluster sono presenti dati che non sono replicati su questo nodo, è necessario eseguire nodetool repair
nodi aggiuntivi.
-pr
su ogni nodo, coprirà l'intero spazio delle chiavi?