2015-07-15 8 views
8

Ich habe einen Cassandra-Cluster mit ~ 20 Knoten in mehreren Datencentern. Ich möchte die Cassandra-Datenbank sichern. Ich möchte, dass es möglich ist, die Sicherung in einem neuen Cluster wiederherzustellen, selbst wenn jeder Knoten in dem vorhandenen gleichzeitig von einem Meteor getroffen wird.Welche Best Practices für die Sicherung eines Cassandra-Clusters gibt es?

  1. Was genau muss ich von den Servern kopieren und beibehalten, um eine Wiederherstellung von einer Cassandra-Datenbank von Grund auf möglich zu machen, und wo werden diese Elemente gespeichert? Ich nehme an, dass dies nicht so einfach ist wie "mach einen Schnappschuss und rsync es irgendwo".
  2. Wie führe ich die Sicherung und Wiederherstellung durch?
  3. Wo wird dieser Prozess dokumentiert?

Antwort

7

Traditional „Sichern und Wiederherstellen“ info finden Sie hier: http://docs.datastax.com/en/cassandra/2.1/cassandra/operations/ops_backup_restore_c.html

Im Wesentlichen Sie Schnappschuss auf jeder Maschine nehmen und die Dateien sichern. Ziemlich viel "machen Sie einen Schnappschuss und rsync es irgendwo" !! Inkrementelle Backups können dazu beitragen, Backup-Größen zu reduzieren, usw. Der Link erklärt es ausführlicher.

Wenn Sie jedoch nur ein "sekundäres" System verwenden möchten, wenn die Maschinen von einem Meteor getroffen werden, ist es üblich, ein anderes Rechenzentrum (oft mit weniger Knoten) einzurichten und den Replikationsfaktor festzulegen in den Schlüsselbereichen, so dass das Datencenter "backup" repliziert werden kann. Ihre Apps verwenden normalerweise das lokale Quorum, um in das "Haupt" -Datencenter zu schreiben, während das Backup ... nun ... als Backup dient. Wenn das Backup DC leistungsstark ist, kann es sogar als Hot Backup dienen.

Mit diesem Setup streamt Cassandra Daten zum Backup, wenn es hinzugefügt wird. Dies verhindert mühsame Snapshot-basierte Backups mit Dateien, die in einem Netzwerk gespeichert sind. Dies schützt jedoch nicht davor, dass ein Entwickler versehentlich Daten von Cassandra löscht. (Dinge wie Drop Keyspace ... können bis zu einem bestimmten Zeitraum wiederhergestellt werden, aber wenn Sie versehentlich einige Zeilen löschen ... sind sie weg).

Hoffe, dass hilft.

+0

Der Grund, ich schlage vor, es ist nicht nur "einen Schnappschuss machen und rsync es irgendwo" kommt von der Seite (gut, Unterseiten davon), auf die Sie zeigen. z.B. Die Seite "Von einem Snapshot wiederherstellen" schlägt vor, dass ich (separat) auch das Schema sichern sollte, und die Seite "Wiederherstellung auf einen neuen Cluster" legt nahe, dass ich auch eine Token-Liste vom alten Cluster benötige. – Andrew

+3

(der letzte nimmt an, dass der alte Cluster lebendig sein wird, wenn er beschreibt, wie man einen neuen Cluster wiederherstellt. Das war der Punkt, an dem ich mich entschieden habe, hier zu fragen) – Andrew

+0

Bei Verwendung von vnodes sind Token-Listen möglicherweise nicht notwendig. Ein anderer Cluster mit demselben Schema sollte funktionieren - ich habe beispielsweise Daten in vagabundierenden Boxen wiederhergestellt. Der einfachste Weg, um Daten von A nach B zu bekommen, ist die Cassandra-Replikation - dafür wurde sie entwickelt. Du könntest das Backup "rsync backup" machen :) – ashic