如何将数据从大小为N的Cassandra集群迁移到大小为N +/- M的不同集群

Tur*_*rbo 7 migrate cassandra

我试图弄清楚如何将数据从一个cassandra集群迁移到另一个不同环大小的cassandra集群...比如从5节点集群到7节点集群.

我开始查看sstable2json,因为它在特定的cassandra节点上为SSTable创建了一个json文件.我的想法是为环中每个节点上的列族做这个.因此,在5节点环上,这将为我提供5个json文件,一个文件用于存储在每个节点上的列族中的数据.

然后我将json文件合并到一个文件中,并使用json2sstable导入到一个大小的新集群中,让我们说7.我希望cassandra然后在环中的节点上均匀地复制/平衡数据,但我刚刚读到SSTables一旦写完就是不可变的.因此,如果我按照刚刚提到的那样做,我最终会在一个节点上使用我的列族中的所有数据.

那么,任何人都可以帮我找出将数据从一个集群迁移到不同环大小的不同集群的过程吗?

jbe*_*lis 9

更好:在旧环上的sstables上使用bin/sstableloader,以流式传输到新环.

通常sstableloader用于这样的序列:

  1. 使用SSTableWriter在本地创建sstables
  2. 使用sstableloader将sstables中的数据流式传输到正确的节点(bin/sstableloader path-to-directory-full-of-sstables).假定目录名称是键空间,如果将其指向现有的Cassandra数据目录,则会出现这种情况.

由于您希望将数据从现有群集A流式传输到新的群集B,因此您可以直接跳过针对群集A中每个节点上的数据运行的sstableloader.

有关在此博客文章中使用sstableloader的更多详细信息.