Cassandra Show Snapshot

Cassandra Show Snapshot

I backup sono caratteristiche incredibili, soprattutto quando si lavora con ambienti critici per i dati. In Apache Cassandra, possiamo creare backup di dati di database archiviati come file sStable. È quindi possibile utilizzare i file di backup per ripristinare il database in caso di perdita di dati, nodo o errore di partizione. I backup possono anche essere utilizzati per replicare il database in un'altra macchina, rimuovendo la necessità di ricreare la struttura da zero.

Cassandra supporta due tipi principali di backup:

  1. Istantanee
  2. Backup incrementali

In questo tutorial, ci concentreremo sui backup di Snapshot. Innanzitutto, impariamo come possiamo inizializzare e creare i backup del database memorizzati in un cluster Apache Cassandra.

Immerciamoci.

Cosa sono le istantanee?

Nel contesto di un cluster Apache Cassandra, un'istantanea si riferisce a una copia dei file sstable di una tabella in un momento specifico. La tabella Sstable o Sorted Strings è un formato di file che Apache Cassandra utilizza per archiviare i dati in memoria in MemTables per un rapido accesso. I file sStable sono immutabili e vengono rimossi o uniti con nuovi file sStable man mano che i dati cambiano.

Le istantanee in Cassandra possono essere emesse manualmente dall'utente o automatizzate abilitando la funzione nei file di configurazione.

Impostazione dei dati di esempio per illustrare le istantanee in Cassandra

Prima di illustrare come eseguire le istantanee in Cassandra, creiamo alcuni dati di esempio per dimostrare come creare istantanee.

Cominciamo creando un'istantanea.

cassandra@cqlsh> Crea snapshot dello spazio delle chiavi
... con replication = 'class': 'SimpleStrategy', 'Replication_Factor': 1;

La query precedente crea uno spazio di tastiera con la SimpleStrategy e il fattore di replica di 1.

Possiamo quindi passare a quello spazio di tastiera e creare due tabelle:

cassandra@cqlsh> usa snapshotting;

Successivamente, crea una tabella degli utenti come segue:

cassandra@cqlsh: snapshotting> crea utenti di tabelle (
... id int,
... testo del nome utente,
... testo e -mail,
... chiave primaria (ID)
...);

Possiamo anche creare un'altra tabella che viene chiamata con una struttura simile:

cassandra@cqlsh: snapshott> crea tabella utenti_copy (
... id int,
... testo del nome utente,
... testo e -mail,
... chiave primaria (ID)
...);

Infine, possiamo aggiungere alcuni dati di esempio alla tabella come mostrato:

Inserisci in utenti (id, nome utente, email) valori (0, 'username1', '[email protected] ');
Inserisci in utenti (id, nome utente, email) valori (1, 'username2', '[email protected]');
Inserisci in utenti_copy (id, nome utente, email) valori (0, 'username1', '[email protected] ');
Inserisci in utenti_copy (id, nome utente, email) valori (1, 'username2', '[email protected]');

Possiamo quindi interrogare i tavoli come segue:

cassandra@cqlsh: snapshotting> seleziona * dagli utenti;
cassandra@cqlsh: snapshotting> seleziona * da utenti_copy;

Produzione:

Configurare il cluster Cassandra per le istantanee

Prima di creare eventuali istantanee, è bene assicurarsi che la creazione di istantanea automatica sia disabilitata. Modifica la Cassandra.File YML e impostare il seguente valore:

AUTO_SNAPSHOT: FALSE

Si consiglia inoltre di disabilitare la compattazione automatica prima della creazione di snapshot. Nella Cassandra.File YML, imposta il seguente valore:

snapshot_before_compaction: false

Una volta che le impostazioni fornite sono pronte, riavvia il cluster Cassandra per applicare le modifiche.

Prendendo istantanee di tutti gli spazi di tastiera

Quando creano manualmente le istantanee in Cassandra, usiamo il comando NodeTool. Puoi eseguire il seguente comando:

$ nodeTool help snapshot

Per visualizzare le opzioni di comando disponibili.

Per prendere un'istantanea di tutte le aree di tasti nel cluster Cassandra, possiamo eseguire il seguente comando:

$ NodeTool Snapshot

Il comando dovrebbe restituire un messaggio come mostrato:

Per impostazione predefinita, Cassandra crea un'istantanea con il nome del timestamp corrente.

Per specificare il nome dell'istantanea, è possibile utilizzare l'opzione -t come mostrato nel comando seguente:

$ nodetool snapshot -t backups

Questo crea un'istantanea di tutte le aree di tasti nel cluster e lo memorizza nella directory di backup.

Prendendo un'istantanea di un singolo spazio di tastiera

Puoi anche fare un backup di un singolo spazio di tastiera nel cluster specificando il nome dello spazio della chiazza. Ad esempio, per fare un'istantanea dello spazio di chiavi di snapshot che abbiamo creato in precedenza, possiamo eseguire il seguente comando:

$ nodeTool snapshot -t snapshotting_backup snapshotting

Cassandra crea una directory snapshot per ciascuna tabella nello spazio del tasto specificato. Ad esempio, poiché lo spazio di tastiera "snapshot" contiene due tabelle, Cassandra crea una directory di istantanea per ciascuno.

Per impostazione predefinita, Cassandra memorizza le istantanee nella directory/var/lib/cassandra/dati.

$ ls -la/var/lib/cassandra/data/snapshott/

Dovresti vedere le directory di ogni tabella nello spazio di chiave.

All'interno di ogni file, troverai gli altri file e directory come mostrato:

Prendendo un'istantanea di una singola tabella all'interno di uno spazio chiave

A volte, potresti voler prendere un'istantanea di una tabella specifica all'interno di un determinato spazio chiave. Per questo, è possibile utilizzare l'opzione -table seguita dal nome della tabella che si desidera eseguire il backup.

Ad esempio, per prendere un'istantanea della tabella utenti_copy nello spazio di tastiera "snapshot", possiamo eseguire il seguente comando:

$ NodeTool Snapshot -Table Users_Copy -t UC_SNAP Snapshot

Il comando crea un'istantanea della tabella utenti_copy e la memorizza sotto la directory UC_SNAP.

Elenco di istantanee

Per visualizzare le snapshot disponibili nel cluster, utilizzare il comando ListSnapShot come mostrato:

$ NodeTool Listsnapshots

Dovresti ottenere un elenco di tutte le snapshot e dettagli disponibili come il nome di istantanee, a cui appartengono lo spazio di chiavi, il nome della famiglia, la dimensione sul disco e la dimensione effettiva.

Dettagli dell'istantanea:
Nome snapshot Nome Keyspazio colonna Nome Famiglia Dimensione True Dimensione su disco
uc_snap snapshotting utenti_copy 0 byte 5.87 Kib
1661397218984 System_schema colonne 0 byte 12.51 Kib
1661397218984 System_schema Tipi 0 byte 15.03 Kib
1661397218984 System_schema indici 0 byte 15.15 kib
1661397218984 System_schema Keyspaces 0 byte 5.81 Kib
1661397218984 System_schema Dropped_columns 0 byte 15.63 kib
1661397218984 System_schema aggregati 0 byte 15.4 kib
1661397218984 System_schema triggers 0 byte 15.15 kib
1661397218984 System_schema Tabelle 0 byte 10.27 Kib
1661397218984 Snapshotting utenti 0 byte 5.86 Kib
1661397218984 Snapshotting Users_Copy 0 byte 5.87 Kib
snapshotting_backup snapshotting utenti 0 byte 5.86 Kib
snapshotting_backup snapshotting utenti_copy 0 byte 5.87 Kib
Backups Snapshoting Users 0 Byte 5.86 Kib
Backups Snapshotting Users_Copy 0 byte 5.87 Kib
1661397899477 Snapshotting Users_Copy 0 byte 5.87 Kib
TruediskSpaceused Total TrudeSksused: 0 byte

Conclusione

In questo articolo, hai imparato come funziona la snapshot in Apache Cassandra. Hai anche imparato a prendere le istantanee degli spazi di tasti, tabelle specifiche all'interno di uno spazio di tastiera e altro ancora.

Grazie per aver letto!