当表在集群中的多个节点之间复制时,COPY 如何在 cassandra 中工作?
Posted
技术标签:
【中文标题】当表在集群中的多个节点之间复制时,COPY 如何在 cassandra 中工作?【英文标题】:How COPY works in cassandra when table is replicated accross multplie nodes in a cluster? 【发布时间】:2017-03-23 13:06:24 【问题描述】:假设如果要将表从具有 RF = '3' 的 7 个节点的集群复制到另一个具有 RF '3' 的 6 个节点的集群,我该怎么做?我可以将数据从任何节点复制到 CSV 文件,然后将该数据从 CSV 文件导入到新集群中的任何节点吗?还是应该将集群中每个节点的数据复制到新集群??
我是否应该将复制减少到 1,然后复制数据并将复制更改为 3,但我认为这在生产中不起作用??我该如何解决这个问题??
【问题讨论】:
【参考方案1】:它不是你必须在每个节点上运行的东西。您可以在集群外的系统上使用 cqlsh 的 COPY 命令。从 sstables/commitlogs 恢复集群是您需要担心的地方(sstableloader 也可以解决这个问题)。
使用COPY TO
时它将读取所有数据,使用COPY FROM
时它将通过写入路径发送每一行,该路径将根据您的RF 分配。与使用基本的读/写脚本相比,它的效率要高得多,但最终仍然是它在做的事情。
【讨论】:
【参考方案2】:如果您可以访问 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
【讨论】:
以上是关于当表在集群中的多个节点之间复制时,COPY 如何在 cassandra 中工作?的主要内容,如果未能解决你的问题,请参考以下文章