Apache Cassandra è costruito per garantire un'alta disponibilità in tutti gli ambienti. Ciò significa che se un singolo o più nodi con un cluster non sono disponibili, gli altri nodi all'interno del cluster gestiranno le operazioni richieste.
Tuttavia, quando i nodi non disponibili diventano raggiungibili, devono sapere quali operazioni hanno perso all'interno del cluster. Pertanto, Apache Cassandra utilizza una funzione di suggerimento per avvisare i nodi di tutte le funzioni che hanno perso mentre non è disponibile. Sebbene i suggerimenti possano eseguire una notifica delle operazioni mancanti, non garantisce una coerenza completa dei dati attraverso il cluster. Questa incoerenza può portare alla perdita di dati, specialmente se un cluster attivo moltiplica le operazioni CRUD.
Per evitare una perdita di dati, è necessario eseguire le riparazioni dei dati, consentendo ai nodi di sincronizzare i dati attraverso il cluster con le informazioni aggiornate.
In questo tutorial, scoprirai come eseguire le riparazioni manualmente nel cluster Cassandra usando l'utilità NodeTool.
Tipi di riparazioni in Cassandra
Cassandra supporta due tipi principali di riparazioni:
Riparazioni incrementali
Per impostazione predefinita, Cassandra esegue una riparazione incrementale. Questa riparazione ripara solo i dati che sono cambiati dalla riparazione precedente. Questo è meno ad alta intensità di risorse e molto utile quando si esegue regolarmente le riparazioni.
Uno svantaggio delle riparazioni incrementali è che una volta che i dati sono contrassegnati come riparati, Cassandra non tenterà di ripararli di nuovo. Ciò può portare alla perdita di dati, soprattutto se la riparazione diventa corrotta.
Riparazioni complete
D'altra parte, le riparazioni complete sono molto intense alle risorse, specialmente sulle operazioni di I/O del disco e della rete. Tuttavia, eseguono le riparazioni dei dati attraverso il cluster, sincronizzando le informazioni corrette e aggiornate.
Potremmo spendere questo intero articolo sui vari tipi di riparazioni di Cassandra e come Cassandra gestisce le riparazioni. Tuttavia, entriamo nel corso principale dell'articolo.
Il comando di riparazione nodetool
Per eseguire una riparazione dei dati su un cluster Cassandra, utilizziamo il comando di riparazione NodeTool. La sintassi e le opzioni del comando sono come mostrati:
A seconda del metodo specificato, il comando di riparazione esegue una riparazione completa o incrementale su uno o più nodi.
Come eseguire una riparazione completa nel cluster Cassandra
In questa sezione, guardiamo come possiamo eseguire una riparazione completa su un cluster Cassandra.
Nota: per illustrare al meglio una riparazione completa, eseguire i comandi in questo tutorial in un cluster con tre o più nodi.
Passaggio 1: creare uno spazio di tastiera con un fattore di replica di 3 (o per il numero di nodi disponibili).
cassandra@cqlsh> crea sviluppo dello spazio delle chiavi
... con replication = 'class': 'SimpleStrategy', 'Replication_Factor': 3;
Passaggio 2: creare una tabella e aggiungere un dati di esempio.
cassandra@cqlsh: sviluppo> crea tabella t (id int, testo nome, età int, chiave primaria (id));
Passaggio 3: aggiungere un dati di esempio.
cassandra@cqlsh: sviluppo> inserisci in t (id, nome, età) (0, 'user1', 2);
cassandra@cqlsh: sviluppo> inserisci in t (id, nome, età) (1, 'user2', 3);
cassandra@cqlsh: sviluppo> inserire in t (id, nome, età) (2, 'user3', 5);
Passaggio 4: ottenere un dati archiviati nella tabella.
cassandra@cqlsh: sviluppo> seleziona * da t;
Produzione:
id | età | nome
----+-----+-------
1 | 3 | Utente2
0 | 2 | Utente1
2 | 5 | Utente3
Passaggio 5: aggiorna lo spazio di chiavi per includere 4 repliche.
cassandra@cqlsh: sviluppo> alter keyspace Development
... con replication = 'class': 'SimpleStrategy', 'Replication_Factor': 4;
Aumentare il numero di repliche imita il funzionamento di un nodo nel cluster che scende e torna indietro.
L'aumento del fattore di replica dovrebbe darti un messaggio per eseguire una riparazione dei dati.
Passaggio 6: eseguire una riparazione completa dei dati come:
$ NodeTool Repair -Full Development
Il comando precedente esegue una riparazione completa su tutte le tabelle nello spazio chiave specificato. Per riparare solo una tabella, possiamo eseguire il seguente comando:
$ NodeTool Repair -Full Development t
Questo dovrebbe riparare solo la tabella "T" nello spazio di chiave.
Per visualizzare lo stato di riparazione, è possibile utilizzare il comando TPSTATS:
$ nodeTool tpstats
Conclusione
In questo articolo, hai imparato a eseguire la riparazione completa di Cassandra usando l'utilità NodeTool.
Grazie per aver letto!