如何将数据从大小为 N 的 Cassandra 集群迁移到大小为 N+/-M 的不同集群
我正在尝试弄清楚如何将数据从一个 cassandra 集群迁移到另一个环大小不同的 cassandra 集群...比如从 5 节点集群迁移到 7 节点集群。
我开始查看 sstable2json,因为它为特定 cassandra 节点上的 SSTable 创建一个 json 文件。我的想法是对环中每个节点上的列族执行此操作。因此,在 5 个节点环上,这将为我提供 5 个 json 文件,其中一个文件用于存储在驻留在每个节点上的列族中的数据。
然后我将 json 文件合并到一个文件中,并使用 json2sstable 导入到一个新的集群,大小为 7。我希望 cassandra 能够在环中的节点之间均匀地复制/平衡数据,但我刚刚读到 SSTables 一旦写入就不可变。因此,如果我执行刚才提到的操作,我最终会得到一个环,其中包含一个节点上列族中的所有数据。
那么任何人都可以帮我弄清楚将数据从一个集群迁移到不同环大小的不同集群的过程吗?
I'm trying to figure out how to migrate data from one cassandra cluster, to another cassandra cluster of a different ring size...say from a 5 node cluster to a 7 node cluster.
I started looking at sstable2json, since it creates a json file for the SSTable on that specific cassandra node. My thought was to do this for a column family on each node in the ring. So on a 5 node ring, this would give me 5 json files, one file for the data stored on in the column family that resides on each node.
Then I'd merge the json files into one file, and use json2sstable to import into a new cluster, of size, lets say 7. I was hoping that cassandra would then replicate/balance the data out evenly across the nodes in the ring, but I just read that SSTables are immutable once written. So if I did what I just mentioned, I'd end up with a ring with all the data in my column family on one node.
So can anyone help me figure out the process for migrating data from one cluster to a different cluster of a different ring size?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
更好:在旧环上的 sstable 上使用 bin/sstableloader,以流式传输到新环。
通常 sstableloader 按如下顺序使用:
由于您希望将数据从现有集群 A 流式传输到新集群 B,因此您可以直接跳到针对集群 A 中每个节点上的数据运行 sstableloader。
有关使用 sstableloader 的更多详细信息,请参见 这篇博文。
Better: use bin/sstableloader on the sstables from the old ring, to stream to the new one.
Normally sstableloader is used in a sequence like this:
Since you're looking to stream data from an existing cluster A to a new cluter B, you can skip straight to running sstableloader against the data on each node in cluster A.
More details on using sstableloader in this blog post.
您不需要使用 sstable2json。如果您有空间,您可以:
You don't need to use sstable2json. If you have the space you can:
您可以执行以下一些步骤:
1. 将 7 个节点加入 5 个节点集群,并为每个节点设置自己的环令牌。这时,你可能有一个有12个节点的集群。
2. 从步骤 1 中的新集群中删除 5 个节点。
3. 移动自己的5个节点后,为每个节点设置令牌环。
4.修复7节点集群。
You may do some steps as following:
1. Join 7 nodes into 5 nodes clusters and set up each node with its own ring token. At this time, you may have a cluster with 12 nodes.
2. Remove 5 nodes from new cluster in step 1.
3. Set up the token ring for each node after moving 5 nodes in your own.
4. Repairing the 7 nodes cluster.
我敢说,这并不像看上去那么大。
I would venture to say that this isn't as big of a problem as it may seem.