【发布时间】:2014-11-26 04:55:30
【问题描述】:
我有一个包含 9 TB 数据的 5 节点 cassandra 集群,并计划在集群中再添加 5 个节点。添加新节点后,负载平衡将开始,分区键的子范围将映射到新节点。我应该在什么时候进行 nodetool 清理。在启动新节点后立即进行 nodetool 清理是否会从集群中的旧节点中删除属于该子范围的旧数据。
【问题讨论】:
我有一个包含 9 TB 数据的 5 节点 cassandra 集群,并计划在集群中再添加 5 个节点。添加新节点后,负载平衡将开始,分区键的子范围将映射到新节点。我应该在什么时候进行 nodetool 清理。在启动新节点后立即进行 nodetool 清理是否会从集群中的旧节点中删除属于该子范围的旧数据。
【问题讨论】:
DataStax 文档Adding nodes to an existing cluster 提到了这一点:
在每个新节点上启动 Cassandra。在节点之间留出两分钟 初始化。您可以监控启动和数据流 使用 nodetool netstats 处理。
在所有新节点都运行之后,运行 nodetool cleanup 在每个先前存在的节点上删除 不再属于这些节点的密钥。等待清理到 在执行下一个节点之前在一个节点上完成。清理可能是安全的 推迟到低使用时间。
这似乎表明您应该在所有新节点都启动、运行并完全引导后运行nodetool cleanup。此过程将从旧节点上的子范围中删除旧数据。如图所示,确保在每个旧节点上运行nodetool cleanup,一次一个节点。
【讨论】:
nodetool status 应该可以让您了解负载平衡状态/进度。