我们向数据中心添加了一个新节点,然后nodetool cleanup
根据cassandra中的现有集群添加新节点运行.但是在清理完成后,我们注意到我们丢失了一些数据.
可能是什么原因?
是的,重要的是要了解这nodetool cleanup
是一种潜在的破坏性工具.您的群集需要处于完全修复状态(从nodetool repair
之前的常规成功运行).
向集群添加新节点时,将调整每个节点负责的令牌范围,并降低每个节点的令牌范围.这会在他们不再负责的原始节点上留下数据.这是设计的.
我们的想法是,如果由于某种原因,节点添加进程失败并且您必须将群集保留为其原始大小,那么数据仍然存在.但是,如果您无法保证您的群集首先处于完全修复状态并且运行了清理,则可能并非所有副本都会将其转移到正确的节点.但是像nodetool getendpoints
引导程序一样会假设它是.
这就是为什么确保在运行之前定期nodetool repair
在群集上运行很重要的原因.nodetool cleanup