2016-12-03 1 views
1

Ich habe einen Cassandra 3-Knoten-Cluster und einen Schlüsselraum mit einem geschaffenen replication_factor von 3.emGriff verschiedene Wiederherstellungsszenarien mit Cassandra 2.2

ich meine Backups für diesen Schlüsselraum mit nodetool snapshot machen. Wie von der Cassandra-Dokumentation empfohlen, starte ich ein globales Backup mit einem Cron-Job auf jedem Knoten (3 Knoten sind NTP-synchronisiert). Ich verwende keine inkrementellen Snapshots, es handelt sich immer um einen neuen globalen Snapshot.

Leider habe ich einige Probleme mit dem Wiederherstellungsprozess.

Als Erstes habe ich einen Replikationsfaktor von 3 (und QUORUM Konsistenz der READ und WRITE-Operationen) gesetzt, um sicherzustellen, dass meine App funktioniert, auch wenn 1 Knoten ausgefallen ist.

  • Mein erstes Szenario ist nicht wirklich ein Wiederherstellungsprozess: ein Knoten ausfällt, weil der, sagen wir, die jemand oder die VM etwas Herunterfahren, dass der Knoten auf ausgeführt wurde. Die zwei anderen Knoten arbeiten weiter und empfangen Schreib-/Leseanforderungen. 24 Stunden später gelingt es mir, die VM des ersten Knotens neu zu starten, alle Dienste und Dateien sind noch da, und ich werde den Knoten neu starten. Gibt es irgendwelche Aktionen, die ich vor oder nach dem Neustart ausführen sollte?

  • Das zweite Szenario ist ziemlich gleich, aber ich konnte die VM des ersten Knotens nicht wiederherstellen und ich muss alles neu installieren, einschließlich Cassandra. Wie verwende ich meine Sicherung, um diesen Knoten neu zu synchronisieren? Soll ich es überhaupt benutzen oder ist Cassandra in der Lage, alles neu zu synchronisieren, ohne dass ich etwas wiederherstellen muss? Was soll ich genau in diesem Fall tun?

  • Mein letztes Szenario ist anders. Ich habe alle meine Knoten verloren und kann nichts wiederherstellen. Ich habe meinen globalen Snapshot (3 Snapshots, 1 für jeden Knoten zur gleichen Zeit). Wie ist der Prozess in diesem Fall?

Ich habe die Cassandra Dokumentation für den Wiederherstellungsprozess zu lesen, und ich habe eine Vorliebe für die einfache Kopie-Wiederherstellung (in anderen Worten, ich eher nicht sstableloader verwenden). Ich habe Probleme zu verstehen, wenn ich refresh und/oder repair Befehle in diesen Szenarien verwenden sollte.

Antwort

1

Ich habe Schwierigkeiten zu verstehen, wenn ich refresh und/oder Reparatur Befehle in diesen Szenarien

Nach documentation sollten Sie refresh ausführen, wenn Sie Daten wiederherstellen

von einem Snapshot verwenden sollte, die zweite und die 3. Szenarien.

Ich vermute, Reparatur ist Schritt für alle drei Szenarien nicht erforderlich. Aber ich würde empfehlen, es durchzuführen, weil es ein einfacher und nützlicher Schritt ist, konsistente Daten auf gerade wiederhergestellten Knoten zu haben.

Darüber hinaus ist repair regelmäßig ein empfohlener Teil der Cassandra-Cluster-Wartung.

+0

Vielen Dank für Ihre Antwort. Aber sollte im Falle des ersten Szenarios nach dem Neustart des Knotens, der für einige Stunden oder Tage heruntergefahren wurde, neben "nodetool repair" etwas anderes gemacht werden?Und für den zweiten, sollte ich meinen Schnappschuss vom verlorenen Knoten verwenden oder ist Cassandra in der Lage, alles selbst zu synchronisieren, indem ich die 2 anderen Knoten benutze? –

+0

@TheWingman, Reparatur ist genug für das erste Szenario, auch der Knoten war für eine lange Zeit nicht verfügbar. Und für den zweiten kann Cassandra Daten von anderen Knoten laden (http://cassandra.apache.org/doc/latest/operating/topo_changes.html#bootstrap), aber es kann lange dauern, verglichen mit der Wiederherstellung von snashot. –