Devi eseguire la riparazione nodetool su ogni nodo?


12

Devi eseguire nodetool repairtutti i nodi in un cluster o devi solo eseguirlo su un nodo e da lì Cassandra si occuperà del resto?

Risposte:


9

Esaminando la documentazione, ho difficoltà a trovare un riferimento per questo, ma la risposta breve è "sì", è necessario eseguire nodetool repairsu 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 -prflag, 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.


Quindi, se corro con -prsu ogni nodo, coprirà l'intero spazio delle chiavi?
ore 2

1
@ 2rs2ts Sì, se lo esegui -prsu tutti i nodi coprirà l'intero spazio / i chiavi.
Aaron,

1
Ok ... suppongo, quindi, che dovresti eseguirlo su ogni nodo ma puoi risparmiare tempo con la -prbandiera.
ore 2

1
Ho aggiunto alcune fonti all'altra risposta. Questa fonte è abbastanza chiara: "Il rigido requisito per la frequenza di riparazione ordinaria è il valore di gc_grace_seconds. Eseguire un'operazione di riparazione almeno una volta su ciascun nodo entro questo periodo di tempo." Nodi di riparazione
Carl G,

5

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 repairsu 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 repaircomando su un singolo nodo in un determinato cluster:

  • Se si esegue un cluster a tre nodi con un fattore di replica di tre tutti i nodi possederanno tutti i dati e quindi le riparazioni verranno eseguite per tutti i nodi.
  • Se si esegue un cluster a sei nodi con un fattore di replica di 2, i dati verranno riparati solo su due dei sei nodi. La riparazione dovrà essere avviata su altri due dei restanti quattro nodi.

Detto questo, è possibile definire quali host e data center eseguire riparazioni sull'uso dei flag -hostse -dc. Inoltre se si utilizza la -prbandiera (che sarà solo scegliere la prima gamma di token il nodo è responsabile per) si dovrà eseguire nodetool repair -prsu tutti i nodi del cluster.

Un'altra bandiera da tenere a mente è la -incbandiera, 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:

https://www.datastax.com/dev/blog/repair-in-cassandra


2
l'unica buona risposta qui
ruruskyi,

2

No, non è necessario eseguire su ogni singolo nodo. nodetool repairfunziona 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 -prun'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.


4
L'esecuzione nodetool repairsu un singolo nodo non è sufficiente per riparare tutti i dati replicati su tutti i nodi in tutte le configurazioni. L'esecuzione nodetool repairsu un singolo nodo ripara solo i dati replicati su quel nodo. (L'aggiunta -prdell'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 repairnodi aggiuntivi.
Carl G,

2
"Se l'opzione -pr non è specificata, Cassandra ripara tutti gli intervalli di replica che rientrano nella responsabilità del nodo." nodetool repair docs ( Vale a dire che non ripara i dati per i quali questo nodo non è responsabile della replica). "Il requisito fondamentale per la frequenza di riparazione ordinaria è il valore di gc_grace_seconds. Eseguire un'operazione di riparazione almeno una volta su ciascun nodo in questo periodo di tempo." Nodi di riparazione
Carl G
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.