当表在集群中的多个节点之间复制时,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 中工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Kubernetes 集群中的 Pod 之间或节点之间复制文件?

Redshift 表在生产集群中占用的磁盘空间呈指数增长

使用映射表在工作簿之间复制多个范围

Redis主从集群切换数据丢失问题如何应对?

Redis主从集群切换数据丢失问题如何应对?

cassandra nosql数据库中的节点,集群和数据中心之间有什么区别?