Ich weiß, es gibt mehrere ähnliche Fragen da draußen, aber ich bin immer noch verwirrt darüber. Da dieser Mechanismus benötigt wird (Daten von einem Cluster in einen anderen kopieren), suche ich nach einer kleinen Erklärung.Cassandra - sstable Snapshot von einem Cluster in einen anderen kopieren
Nehmen wir ein sehr einfaches Szenario an. Ich möchte eine Tabelle von einem Cassandra-Cluster (C1) zu einem anderen (C2) kopieren. Der Tisch, den ich kopiere, heißt "Gegenstand".
Nehmen wir an, die Knotenzahl jedes Clusters ist gleich (Quell- und Zielknoten im Cluster sind jeweils 4). Nicht sicher, ob das wichtig ist oder nicht.
Ich versuche Snapshots und Sstableloader zu verwenden, um den Trick zu tun. Ich konnte einen Snapshot erstellen, kopiere die Snapshot-Dateien von C1: N1 (Cluster 1 Knoten 1 .../myspace/item-xxxxxx/snapshot/######) in das Zieltabellenverzeichnis C2: N1 (Cluster) 2 Knoten 1: .../myspace/item-xxxxxx). Ich verwendete sstableloader, um die Daten zu laden, und führte nodetool Reparatur durch. Perfekt. Das einzige Problem ist, dass der geladene Snapshot nur von einem der Quellknoten stammte. Ich habe nur einen Teil der Daten "wiederhergestellt" (etwa 485 der 1k-Zeilen). Also denke ich, ich werde den Schnappschuss von C1: N2 nach C2: N1 erneut kopieren und laden. Das Problem besteht darin, dass alle Tabellendateien bereits auf dem C2: N1 vorhanden sind. Wenn ich die Snapshot-Dateien von C1: N2 in das Tabellenverzeichnis von C2: N1 kopiere, werde ich die bereits vorhandenen Dateien wegpusten. Ich habe nicht alle 4 Zielknoten überprüft, aber ich habe Knoten 2 des Ziels überprüft und das Verzeichnis der Elementtabelle existierte dort bereits mit Datendateien. Ich nehme an, dass alle Knoten auf dem Ziel Datendateien haben, also bin ich damit beschäftigt, die anderen 3 Quellknoten-Snapshot-Dateien zu speichern.
So lange Geschichte kurz (wenn das möglich ist): Wie soll ich mehrere Quell-Snapshot-Dateien (eine von jedem Host auf dem Quell-Cluster) zu einem Ziel-Cluster laden? Und um die Sache zu komplizieren, ist es wichtig, ob die Quell- und Ziel-Cluster eine unterschiedliche Anzahl von Knoten haben (ich würde denken, dass weniger Knoten auf dem Ziel potentiell ein größeres Problem sein könnten).
Was hier wirklich benötigt wird, ist meiner Meinung nach eine Möglichkeit, den SSABLOADER auf dem SOURCE-Cluster auszuführen und die Daten zu einem Zielcluster streamen zu lassen. Würde das Leben viel einfacher machen, würde ich denken.
Vielen Dank im Voraus.
-Jim
So läuft sstableloader mit „-d IP“ getan werden kann. Wenn ich das getan habe, ist es die Ziel-IP und ich führe sie von einem der Zielknoten aus (und ich verwende einen Snapshot, um die Daten zu laden). Vielleicht liege ich da falsch. Du hast gesagt, ich kann es vom Quell-Cluster ausführen. Setze ich das "-d SourceIP"? Wenn ja, wo gebe ich die Ziel-Cluster-IP an, zu der ich mich verbinden soll? –
'-d' wäre für jeden der Knoten im Zielcluster.Das Tool kann von überall ausgeführt werden –
Danke für die Antwort. Es tut mir leid, dass ich zu wenig darüber weiß, aber wie spezifiziert man den Source-Cluster, zu dem man sich dann verbinden soll? Einfach durch Ausführen auf dem Quellcluster? Nachdem das gesagt wurde, kann man sstableloader dann nicht auf dem Ziel-Cluster ausführen (weil wir nirgendwo die Quell-IP angeben)? –