You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

添加Cassandra节点后如何重平衡集群并回收磁盘空间

新节点加入集群后仅会接管对应token范围的读写请求,原节点上不再负责的存量数据不会自动清除,因此磁盘占用不会随扩容自动下降,可按以下优先级选择方案回收空间:

方案1:单线程分批执行nodetool cleanup(适配性最高)

你关注的cleanup临时磁盘升高问题可以通过参数控制大幅降低:

  • 执行时添加--jobs 1参数限制为单线程运行,全程临时磁盘占用最高仅等于集群中单张最大表的大小,远低于全量repair所需的多副本临时空间
  • 执行顺序选择已完成数据同步的非种子节点逐个运行,每次仅操作1个节点,确认当前节点磁盘回收完成后再处理下一个,全程不影响线上业务可用性
  • 若当前剩余空间不足,可以先清理未自动删除的历史snapshot、归档commitlog,腾挪出10%左右的可用空间即可支撑单线程cleanup运行

方案2:指定范围增量回收(适合剩余空间不足10%的极端场景)

如果连单线程全节点cleanup的空间都凑不出来,可以拆分操作粒度逐步回收:

  • 先针对指定keyspace甚至单表执行cleanup:nodetool cleanup <keyspace名称> <表名>,优先清理小表,回收部分空间后再处理大表
  • 若有配置TTL的表,先执行单表压实nodetool compact <keyspace名称> <表名>合并过期墓碑,这个操作临时空间占用比cleanup更低,可以快速腾出部分空间

不建议操作

  • 现阶段不要执行全量nodetool repair:repair需要跨节点对比多副本数据,生成大量临时Merkle树文件,临时空间占用通常是cleanup的2~3倍,完全不适合当前磁盘紧张的场景
  • 不要手动删除data目录下的sstable文件,会直接导致数据丢失

后续扩容建议

你后续还有新增节点的计划,可以每新增2个节点就执行一轮逐节点cleanup,无需等所有节点扩容完成再处理,避免磁盘占用持续堆积。

内容的提问来源于stack exchange,提问作者Radhika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 16:54:02