2016-04-20 13 views
0

Ich habe einen Cluster mit 2 Maschinen (Centos7 und Cassandra 3.4), 192.168.0.175 und 192.168.0.174. Der Samen ist die 192.168.0.175.Ändern Cluster-Name in Cassandra

Ich möchte einfach den Cluster-Namen ändern. Kuchenfrieden sollte sein.

habe ich auf jedem Cluster:

  • update system.local set cluster_name = 'America2' where key='local';

  • i

  • die nodetool bündig habe ich die cassandra.yaml mit dem neuen Namen

  • neu gestartet cassandra

    aktualisiert .

Wenn ich cqlsh jeder, wenn Sie mich auf neue cluster America2

als verbunden beschreibt Wenn ich nodetool laufe describecluster es den alten Cluster-Namen Amerika

Wenn i cassandra auf beiden Maschinen stoppen zeigt und ich versuche, sie neu zu starten, ich finde in protokolliert den guten alten Fehler:

org.apache.cassandra.exceptions.ConfigurationException: Saved cluster name America != configured name America2

Also .... was mache ich falsch !?

+0

Ich denke, Sie müssen möglicherweise die Knoten zu dekompilieren, sie dann zu stoppen, ändern Sie den Namen des Clusters in der YAML dann neu starten – Whitefret

+0

Ich denke, Sie waren nicht weit von der Lösung: http://StackOverflow.com/Questions/22006887/cassandra -saved-cluster-name-test-cluster-configured-name – Whitefret

+0

Von dem, was ich fühle, ist das '' 'update von system.local''' nicht die Aufgabe. Von dem, was ich verstehe, wenn Cassie feuert, überprüft sowohl die Cassandra.Yaml & das System.Local. Wenn der Name an beiden Stellen überprüft wird, sollten alle ohne Probleme erscheinen. Also, über cassandra.yaml bin ich mir sicher ... nicht sicher, ob ich die Änderung an system.local persistent mache. –

Antwort

2

bevor Namen Cluster Ändern

  1. delete Knoten aus dem Cluster Ring

    nodetool

  2. Stop-Knoten und Ändern des Clusternamen in cassandra außer Betrieb nehmen.yaml

  3. sauber Knoten

    sudo rm -rf/var/lib/cassandra/*/var/log/cassandra/*

  4. Start cassandra Knoten

Weitere Informationen kann bei academy.datastax.com

+0

Noch ist der Cluster frisch, aber in Anbetracht der Produktion und Sie haben einige Daten, wenn ich folge Schritt 3 Ich könnte etwas verlieren !? –

+0

Außerbetriebnahme ist ein Instrument, um sicher zu gehen, dass Sie keine Daten verlieren –

0

Es ist nicht wirklich möglich. Ich hatte das gleiche Problem. Ich habe das auf eine wirklich schmutzige Art und Weise gelöst. Ich habe ein Skript geschrieben, in dem ich alle meine Spaltenfamilien-Daten gesammelt habe. Einfach: Ein Backup. Dann habe ich dies auf jedem Knoten getan: Ich habe Cassandra gestoppt, ich habe alle Cassandras-Daten, den Cache usw. gelöscht. (Sie können Cassandra auch neu installieren.) Ich habe einen neuen Cluster erstellt, der mein Backup importiert hat. Und das habe ich für jeden Knoten gemacht.

+0

op verwendet bündig, bedeutet dies, er ist nicht um Datenverlust nein interessiert? – Whitefret

+0

ok, nicht dasselbe, mein schlechtes. aber ich habe das gesehen: http://stackoverflow.com/questions/22006887/cassandra-saved-cluster-name-test-cluster-configured-name – Whitefret

1

Ok Jungs finden, was ich tat:

cqlsh mit jeder Maschine und:

update system.local set cluster_name = 'canada' where key='local' ; dann

$ nodetool flush -- system

dann stoped i den Dienst auf beiden Maschinen.

modifiziert die cassandra.yaml mit dem neuen Clusternamen Kanada.

starteten die Maschinen zurück, sie arbeiteten mit neuem Clusternamen.

Es ist möglich, diese Schritte auszuführen, ohne alle Maschinen im Cluster zu stoppen und sie nacheinander zu entfernen (ich denke, eine Reparatur an jedem Knoten könnte danach erforderlich sein). Überlegen Sie zuerst, die Samen zu ändern.