Wie soll ich einen Schlüsselraum innerhalb eines Clusters kopieren?

8

Ich habe einen Schlüsselbereich mit Daten gefüllt, deren Generierung teuer war. Ich möchte zwei Kopien dieser Daten in meinem Cluster haben. Ich würde gerne mit zwei Schlüsselräumen enden: Lassen Sie sie mydata und mydatabackup nennen, die beide identische Daten enthalten (es macht mir nichts aus, wenn die Cassandra-Zeitstempel anders sind).

Gibt es einen einfachen Weg, dies zu tun? Das engste, was ich zu einer Antwort finden kann, ist die Verwendung von sstable2json und json2sstable , wie in Antwort auf a vorgeschlagen ähnliche Frage ? Gibt es einen besseren Weg?

    
lorcan 13.09.2013, 16:19
quelle

1 Antwort

6

"Gibt es einen besseren Weg?"

Alle Cassandra-Daten werden im Daten / Ordner gespeichert (überprüfen Sie den Konfigurationswert data_file_directories in cassandra.yaml ). Sie können auch das Verzeichnis saved_caches_directory und commitlog_directory überprüfen.

Innerhalb des Datenordners haben Sie

  1. Ein Ordner pro Schlüsselbereich
  2. Ein Ordner für Systemschlüsselraum
  3. Ein Ordner für die Authentifizierung usw ..

    In jedem Schlüsselbereichsordner haben Sie

  4. * - Data.db-Dateien, die Ihre echten Daten enthalten

  5. * - Filter.db-Dateien
  6. * - Index.db-Dateien für den Index
  7. ...

Um Daten zu replizieren, führen Sie eine Kopie dieser Ordner durch.

In unserem Team verwenden die Ops eine Crontab, um eine regelmäßige Sicherung von Cassandra-Daten auf diese Weise zu planen.

Hinweis: Manchmal verpassen Sie Live-Daten, die sich noch im Speicher oder in memtable befinden und noch nicht auf die Festplatte geleert wurden. Sie können vor dem Sichern von Datendateien eine vollständige Komprimierung auslösen. Aber volle Kompaktierung kann dich verletzen, also sei vorsichtig

Bessere Antwort: Verwenden Sie das mitgelieferte Tool, um einen Schnappschuss Ihrer DB zu erstellen:

Ссылка

    
doanduyhai 13.09.2013, 19:02
quelle

Tags und Links