2016-03-21 5 views
3

Wir haben ein Backup/Restore-Verfahren für unsere Cassandra-Produktionsumgebung über Snapshots eingerichtet. Die Snapshot-Dateien, Schema- und Token-Ring-Informationen werden nach S3 kopiert.Cassandra-Snapshot (aus 3-Node-Cluster) auf Entwickler oder Test-Cluster (1-Node-Cluster) wiederherstellen

Die Herstellung Cluster ist ein 3-Knoten-Cluster mit einem Replikationsfaktor von 3.

Für die Entwicklung und Test würde Ich mag die Schnappschüsse von der Produktion in getrennte Cluster wiederherzustellen. Um Geld zu sparen und die Wartung zu vereinfachen, wäre es nett, nur den Snapshot von einem Produktionsknoten wiederherzustellen. Da wir in einem 3-Node-Cluster einen Replikationsfaktor von 3 verwenden, sollte jeder Snapshot alle Zeilen enthalten. Konsistenz ist auch nicht wichtig für unseren Anwendungsfall.

Kann (und wie) nur ein einzelner Snapshot wiederhergestellt werden?

+0

Haben Sie sich http://stackoverflow.com/questions/25465904/how-can-i-restore-cassandra-snapshots angesehen? –

Antwort

4

Alle Ihre Daten sollten auf allen 3 Knoten vorhanden sein, daher sollte das Kopieren der stables von einem beliebigen Knoten zu Ihrem Testcluster ausreichen. Stellen Sie sicher, dass es eine neue Reparatur im Voraus gibt, kann eine gute Idee sein, wenn Sie sich um die Konsistenz sorgen.

Erstellen Sie zuerst das gleiche Schema auf dem Testcluster. Dann können Sie einfach einen Schnappschuss mit nodetool snapshot -t cloneme machen. Kopieren Sie nach dem Abschluss alle sstables aus dem erstellten Ordner (climeme) in den entsprechenden Tabellenordner auf Ihrem Testcluster. Führen Sie dann nodetool refresh.

Es wird viel komplizierter, wenn Sie eine andere Topologie haben (mehr Knoten, andere RF), aber da Sie mit "jeder Knoten hat alle Daten" gehen, ist es ziemlich trivial.

Erwähnenswert, dass OpsCenter eine Funktion zur Automatisierung der copying of a backup to other clusters hat.

+0

Hallo Chris. Danke für die schnelle Antwort. Es klappt. Eigentlich sehr unkompliziert. – Henrik