nodetool cleanup
是一个可能有破坏性的工具。在运行nodetool cleanup
之前,您的集群需要处于完全修复状态(先前定期成功运行nodetool repair
)。nodetool getendpoints
一样,引导过程会认为已经完成了。nodetool cleanup
之前确保您已经定期在集群上运行nodetool repair
的重要性所在。nodetool repair
应该经常运行,正如你正确指出的那样,这非常重要。然而,nodetool cleanup
只会清除节点不拥有的范围。因此,更准确地说,一旦你完成引导操作后,你实际上不能通过修复来恢复数据,因为现有节点上的那些范围已经被无效化了,也就是被释放了所有权。 - markcnodetool cleanup
命令可以释放不再属于节点的分区键,因此在添加节点并传输其数据部分后,这个“部分”不再属于旧节点,因此运行cleanup将释放该节点上的一些空间。
如果您发现旧节点现在具有较低的存储空间,那没关系,没有任何数据丢失。
另一方面,如果您真的找不到某些数据,可能是由于数据损坏或删除(使用墓碑)。 无论如何,您所说的数据丢失是什么意思?
nodetool status
输出以及您如何推断出数据丢失的情况。 - markc