我正在试图弄清楚如何将数据从一个cassandra集群迁移到另一个不同环大小的cassandra集群......例如从5节点集群迁移到7节点集群。
我开始查看sstable2json,因为它在特定的cassandra节点上为SSTable创建了一个json文件。我的想法是为环中每个节点上的列族做这个。因此,在5节点环上,这将为我提供5个json文件,一个文件用于存储在每个节点上的列族中的数据。
然后我将json文件合并到一个文件中,并使用json2sstable导入到一个大小的新集群中,让我们说7.我希望cassandra然后将数据均匀地复制/平衡在节点之间戒指,但我刚刚读到SSTables一旦写完就是不可变的。所以,如果我按照刚刚提到的那样做,我最终会在一个节点上找到我的列族中所有数据的响铃。
那么有人可以帮我弄清楚将数据从一个群集迁移到不同环大小的不同群集的过程吗?
答案 0 :(得分:9)
更好:在旧环上的sstables上使用bin / sstableloader,然后流式传输到新环。
通常sstableloader用于这样的序列:
由于您希望将数据从现有群集A流式传输到新的群集B,因此您可以直接跳过针对群集A中每个节点上的数据运行sstableloader。
有关在this blog post中使用sstableloader的更多详细信息。
答案 1 :(得分:0)
您不需要使用sstable2json。如果你有空间,你可以:
答案 2 :(得分:0)
您可以执行以下步骤: 1.将7个节点加入5个节点集群,并使用自己的环令牌设置每个节点。此时,您可能拥有一个包含12个节点的群集。 2.在步骤1中从新群集中删除5个节点。 3.在您自己移动5个节点后,为每个节点设置令牌环。 4.修复7个节点集群。
答案 3 :(得分:-1)
我敢说,这不像看起来那么大。