Backups sind unglaubliche Funktionen, insbesondere bei der Arbeit mit datenkritischen Umgebungen. In Apache Cassandra können wir Sicherungen von Datenbankdaten erstellen, die als Sstable -Dateien gespeichert sind. Sie können dann die Sicherungsdateien verwenden, um die Datenbank im Falle eines Datenverlusts, des Knotens oder des Partitionsfehlers wiederherzustellen. Backups können auch verwendet werden, um die Datenbank in einer anderen Maschine zu replizieren und die Notwendigkeit zu beseitigen, die Struktur von Grund auf neu zu erstellen.
Cassandra unterstützt zwei Haupttypen von Backups:
In diesem Tutorial konzentrieren wir uns auf Snapshot -Backups. Zunächst lernen wir, wie wir die Datenbanksicherungen initialisieren und erstellen können, die in einem Apache Cassandra Cluster gespeichert sind.
Lassen Sie uns eintauchen.
Was sind Schnappschüsse?
Im Kontext eines Apache Cassandra Cluster bezieht sich ein Schnappschuss auf eine Kopie der Sstable -Dateien einer Tabelle zu einem bestimmten Zeitpunkt. Die Tabelle Sstable oder Sortierte Zeichenfolgen ist ein Dateiformat, das Apache Cassandra zum Speichern der In-Memory-Daten in Memtables verwendet, um einen schnellen Zugriff zu erhalten. Sstable -Dateien sind unveränderlich und werden mit neuen Sstable -Dateien entfernt oder verschmolzen, wenn sich die Daten ändert.
Schnappschüsse in Cassandra können vom Benutzer manuell ausgestellt oder automatisiert werden, indem die Funktion in den Konfigurationsdateien aktiviert wird.
Einrichten einer Beispieldaten, um die Schnappschüsse in Cassandra zu veranschaulichen
Bevor wir veranschaulichen, wie die Schnappschüsse in Cassandra ausgeführt werden, können wir einige Beispieldaten erstellen, um zu demonstrieren.
Beginnen wir zunächst einen Schnappschuss erstellen.
Cassandra@CQLSH> Tastenspace Snapshotting erstellen
… Mit replication = 'class': 'SimpleStrategy', 'replication_factor': 1;
Die vorherige Abfrage erstellt einen Schlüsselraum mit dem SimpleStrategy- und Replikationsfaktor von 1.
Wir können dann zu diesem Schlüsselraum wechseln und zwei Tabellen erstellen:
Cassandra@CQLSH> Snapshotting verwenden;
Erstellen Sie als Nächstes wie folgt eine Benutzertabelle:
Cassandra@CQLSH: Snapshotting> Tabellenbenutzer erstellen (Benutzer erstellen
… Id int,
… Benutzername Text,
… E -Mail -Text,
… Primärschlüssel (ID)
…);
Wir können auch eine andere Tabelle erstellen, die mit einer ähnlichen Struktur aufgerufen wird:
cassandra@cqlsh: snapshotting> table user_copy (
… Id int,
… Benutzername Text,
… E -Mail -Text,
… Primärschlüssel (ID)
…);
Schließlich können wir der Tabelle wie gezeigt einige Beispieldaten hinzufügen:
Einfügen in Benutzer (ID, Benutzername, E -Mail) Werte (0, 'username1', '[email protected] ');
Einfügen in Benutzer (ID, Benutzername, E -Mail) Werte (1, 'username2', '[email protected]');
In user_copy (ID, Benutzername, E -Mail) Werte (0, 'Benutzername1', 'user1@mail einfügen) einfügen.co ');
In user_copy (ID, Benutzername, E -Mail) Werte (1, 'username2', 'user2@mail einfügen) einfügen.Zu');
Wir können dann die Tabellen wie folgt abfragen:
Cassandra@CQLSH: Snapshotting> Wählen Sie * von Benutzern;
cassandra@cqlsh: snapshotting> select * von users_copy;
Ausgang:
Konfigurieren Sie den Cassandra -Cluster für Schnappschüsse
Bevor Sie Snapshots erstellen, ist es gut, sicherzustellen, dass die automatische Snapshot -Erstellung deaktiviert ist. Bearbeiten Sie die Cassandra.YML -Datei und den folgenden Wert festlegen:
AUTO_SNAPSHOT: Falsch
Es wird auch empfohlen, die automatische Verdichtung vor der Snapshot -Erstellung zu deaktivieren. In der Cassandra.YML -Datei stellen Sie den folgenden Wert fest:
snapshot_before_compaction: false
Sobald die angegebenen Einstellungen fertig sind, starten Sie Ihren Cassandra -Cluster neu, um die Änderungen anzuwenden.
Schnappschüsse aller Schlüsselspazitäten machen
Wenn wir manuell Schnappschüsse in Cassandra erstellen, verwenden wir den Befehl nodetool. Sie können den folgenden Befehl ausführen:
$ nodetool hilf snapshot
Um die verfügbaren Befehlsoptionen anzuzeigen.
Um alle Schlüsselspazitäten im Cassandra -Cluster zu übernehmen, können wir den folgenden Befehl ausführen:
$ nodetool snapshot
Der Befehl sollte eine Nachricht wie gezeigt zurückgeben:
Standardmäßig erstellt Cassandra einen Schnappschuss mit dem Namen des aktuellen Zeitstempels.
Um den Namen des Snapshots anzugeben, können Sie die Option -t verwenden, wie im folgenden Befehl gezeigt:
$ nodetool snapshot -t Backups
Dadurch wird eine Momentaufnahme aller Schlüsselspazitäten im Cluster erstellt und speichert es im Backups -Verzeichnis.
Einen Schnappschuss eines einzelnen Keyspace machen
Sie können auch eine Sicherung eines einzelnen Schlüsselspace im Cluster durchführen, indem Sie den Schlüsselspace -Namen angeben. Um beispielsweise einen Schnappschuss des Snapshotting -Schlüsselspace zu erhalten, den wir zuvor erstellt haben, können wir den folgenden Befehl ausführen:
$ nodetool snapshot -t snapshoting_backup snapshotting
Cassandra erstellt ein Snapshot -Verzeichnis für jede Tabelle im angegebenen Schlüsselraum. Zum Beispiel erstellt Cassandra, da der Schlüsselspace „Snapshotting“ zwei Tabellen enthält, für jeden ein Snapshot -Verzeichnis.
Standardmäßig speichert Cassandra die Snapshots im Verzeichnis/var/lib/cassandra/data.
$ ls -la/var/lib/cassandra/data/snapshotting/
Sie sollten Verzeichnisse jeder Tabelle im Schlüsselraum sehen.
In jeder Datei finden Sie die anderen Dateien und Verzeichnisse wie gezeigt:
Einen Schnappschuss einer einzelnen Tabelle innerhalb eines Schlüsselspace machen
Manchmal möchten Sie möglicherweise einen Schnappschuss einer bestimmten Tabelle innerhalb eines bestimmten Schlüsselraums aufnehmen. Dafür können Sie die Option -Table verwenden, gefolgt vom Namen der Tabelle, die Sie sichern möchten.
Zum Beispiel können wir den folgenden Befehl ausführen, um einen Schnappschuss der Tabelle user_copy in den Tastenabschnitt „Snapshotting“ zu erhalten:
$ nodetool snapshot -table user_copy -t uc_snap snapshotting
Der Befehl erstellt einen Schnappschuss der Tabelle user_copy und speichern Sie sie unter dem Verzeichnis uc_snap.
Snapshots auflisten
Um die verfügbaren Snapshots im Cluster anzuzeigen, verwenden Sie den Befehl ListSnapshot wie gezeigt:
$ nodetool listsnapshots
Sie sollten eine Liste aller verfügbaren Snapshots und Details wie dem Snapshot -Namen, zu welchem Schlüsselraum sie gehören.
Snapshot -Details:
Snapshot -Name Schlüsselspace Name Spaltenfamilienname wahre Größe auf der Festplatte
uc_snap snapshotting user_copy 0 bytes 5.87 Kib
1661397218984 System_Schema -Spalten 0 Bytes 12.51 Kib
1661397218984 System_Schema Typen 0 Bytes 15.03 Kib
1661397218984 System_Schema Indizes 0 Bytes 15.15 Kib
1661397218984 System_Schema Keyspaces 0 Bytes 5.81 Kib
1661397218984 system_schema fallen gelassene 0 Bytes 15.63 Kib
1661397218984 System_Schema Aggregate 0 Bytes 15.4 Kib
1661397218984 System_schema Auslöser 0 Bytes 15.15 Kib
1661397218984 System_Schema -Tabellen 0 Bytes 10.27 Kib
1661397218984 Snapshotting -Benutzer 0 Bytes 5.86 Kib
1661397218984 Snapshotting user_copy 0 Bytes 5.87 Kib
snapshoting_backup snapshotting user 0 bytes 5.86 Kib
snapShoting_backup snapshotting user_copy 0 bytes 5.87 Kib
Sicherungsbackups Snapshotting -Benutzer 0 Bytes 5.86 Kib
Backups Snapshotting user_copy 0 Bytes 5.87 Kib
166139789477 Snapshotting user_copy 0 Bytes 5.87 Kib
Total truedisespaceSused: 0 Bytes
Abschluss
In diesem Artikel haben Sie gelernt, wie Schnappschüsse in Apache Cassandra funktioniert. Sie haben auch gelernt, wie man Schnappschüsse von Schlüsselspaces, spezifische Tabellen innerhalb eines Schlüsselspace und mehr macht.
Danke fürs Lesen!