2017-06-05 3 views
3

Ich habe eine Produktion Cassandra Cluster von 6 Knoten. Ich habe einige Änderungen an der Datei cassandra.yaml auf einem Knoten vorgenommen und muss sie daher neu starten. Wie kann ich das tun, ohne irgendwelche Daten zu verlieren oder irgendwelche clusterbezogenen Probleme zu verursachen? Kann ich den Cassandra-Prozess auf diesem bestimmten Knoten einfach beenden und neu starten? Cluster Info: 6 Knoten. Alle aktiv. Ich verwende AWS Ec2Snitch.Wie startet man einen Live-Knoten von einem Cassandra-Cluster mit mehreren Knoten?

Danke.

Antwort

0

Wenn Sie den Replikationsfaktor größer als 1 verwenden und nicht ALLE Konsistenzeinstellungen für Ihre Schreib-/Lesevorgänge verwenden, können Sie die unten aufgeführten Schritte ausführen, ohne dass es zu Ausfallzeiten/Datenverlust kommt. Falls Sie eine der oben aufgeführten Einschränkungen haben, müssen Sie die Konsistenz des Replikationsfaktors/der Änderungsanforderungen erhöhen, bevor Sie fortfahren.

  1. Perform auf dem Knoten Drain nodetool (http://docs.datastax.com/en/cassandra/2.1/cassandra/tools/toolsDrain.html).
  2. Stoppen Sie den Dienst.
  3. Starten Sie den Dienst.

In Cassandra, wenn dauerhaft schreibt aktiviert sind, sollten Sie die Daten nicht ohnehin verlieren - es gibt einen Mechanismus der commitlog Protokollwiedergabe bei versehentlicher Neustart, so sollten Sie keine Daten verlieren, wenn nur neu starten zu tun, aber commitlog Wiedergabe kann etwas dauern.

Die oben beschriebenen Schritte sind Teil des offiziellen Upgrade-Verfahrens und sollten die "sicherste" Option sein. Sie können nodetool flush + Neustart tun, wird dies sicherstellen, dass Commitlog-Wiedergabe wird minimal sein und kann schneller sein als Drain Ansatz.

+0

Dank @nevsv, ich werde diese auf Staging-Cluster versuchen und dann mit der Produktion fortfahren. Der Replikationsfaktor, den ich verwende, ist 3 und die Lesekonsistenz ist 1. Ich werde meine Erfahrung hier teilen, sobald ich mit der Wartungsaktivität fertig bin. –

0

Kann ich den Cassandra-Prozess auf diesem bestimmten Knoten einfach beenden und neu starten?

Im Wesentlichen ja. Ich nehme an, Sie haben eine RF von 3 mit 6 Knoten, also sollte es keine große Sache sein. Wenn Sie wollen, zu tun, was ich als ein "Clean Shutdown" Sie könnten die folgenden Befehle ausführen zuerst:

nodetool disablegossip 
nodetool drain 

Und dann (je nach Installation):

sudo service cassandra stop 

Oder:

kill `cat cassandra.pid` 

Beachten Sie, dass wenn Sie diese Schritte nicht ausführen, sollten Sie noch in Ordnung sein. Die drain löscht nur die Memtables auf die Festplatte. Wenn dies nicht geschieht, wird das Commit-Protokoll auf jeden Fall mit dem verglichen, was sich auf dem Datenträger zur Boot-Zeit befindet. Diese Schritte werden Ihren Bootvorgang beschleunigen.

+0

Danke @Aaron. Ja, ich benutze tatsächlich den Replikationsfaktor 3 und die Lesekonsistenz ist 1. Wenn ich es richtig verstanden habe, muss ich das Datenverzeichnis nicht entfernen oder berühren und den Vorgang einfach stoppen und starten, sobald ich mit den von Ihnen erwähnten Schritten fertig bin. –

Verwandte Themen