2016-11-09 67 views
2

假設想要從RF ='3'的7個節點的簇中複製一個表到另一個6個節點的RF'3'簇,我該怎麼做?我可以將任何節點的數據複製到CSV文件,然後將數據從CSV文件導入到新集羣中的任何節點?或者應該將羣集中每個節點的數據複製到新羣集中?如何在cassandra中複製表時複製在羣集中多個節點上的複製?

我應該減少複製到1然後複製數據和更改複製到3,但我認爲這不會在生產?我該如何解決這個問題?

回答

3

它不是你必須在每個節點上運行的東西。您可以在集羣外部的系統上使用cqlsh的COPY命令。從sstables/commitlogs恢復集羣是你需要擔心的地方(sstableloader也可以解決這個問題)。

它將在使用COPY TO時讀取所有數據,當使用COPY FROM時,它將通過寫入路徑發送每一行,這將根據您的RF進行分配。它使用基本的讀/寫腳本更有效,但最終仍然是這樣做的。

0

如果您有權訪問Spark(如果您擁有大量數據,這是進行遷移的最佳方法),請查看我的帖子。如果你沒有太多的數據,他們的複製命令將起作用。

www.sestevez.com/cluster-migration-keeping-simple-things-simple/

wget https://github.com/phact/dse-cluster-migration/releases/download/v0.01/dse-cluster-migration_2.10-0.1.jar 

dse spark-submit --class phact.MigrateTable --conf spark.dse.cluster.migration.fromClusterHost='<from host>' --conf spark.dse.cluster.migration.toClusterHost='<to host>' --conf spark.dse.cluster.migration.keyspace='<keyspace>' --conf spark.dse.cluster.migration.table='<table>' ./dse-cluster-migration_2.10-0.1.jar