2016-08-02 44 views
0

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

Antwort

1

Es gibt two options for bulk loading, Es scheint, dass Sie sie halb miteinander verschmolzen kann. Sie beziehen sich hauptsächlich auf den Mechanismus "copy the stables", der ziemlich manuell ist und sich möglicherweise nicht lohnt, es sei denn, die Wiederherstellung hat oberste Priorität. Die Verwendung von sstable loader ist jedoch anders und erfordert dies nicht.

sstableloader Das Tool stellt eine Verbindung zu einem Knoten her, sucht nach allen Knoten in diesem Knotencluster und verwendet die Verbindung zum Erstellen von Metadaten/Discovery. Es teilt/streamt die von Ihnen ausgewählten stables zum Zielcluster in den entsprechenden Tokenbereichen (Sie brauchen die Reparatur nicht). Sie können sstableloader von den Knoten der Quellcluster ausführen und auf den Zielcluster verweisen. Sie müssen die stables nicht über sich selbst kopieren (obwohl sie, wenn sie sich in verschiedenen Domänen befinden, etwas schneller sein können).

Wenn Sie OpsCenter die Automatisierung dieser Schritte für Sie mit einem GUI https://docs.datastax.com/en/opscenter/5.2/opsc/online_help/services/opscBackupCloneCluster.html

+0

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? –

+0

'-d' wäre für jeden der Knoten im Zielcluster.Das Tool kann von überall ausgeführt werden –

+0

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)? –