cassandra节点上常规nodetool修复的目的

时间:2015-11-25 11:52:58

标签: cassandra

我正在通过文档和自定进度的视频课程,所以请耐心等待。

建议在每个节点上频繁运行nodetool repair,这是不清楚的原因。

当您进行写入时,协调器会将请求发送到主令牌持有者节点,也会发送到其他副本。假设所有节点都已启动,则所有节点应在短时间内保持同步。我假设删除和更新都以与插入相同的方式工作,并添加了用于删除的逻辑删除标记。

因此,在一个完美的情况下,没有任何节点出现故障且网络延迟很小,运行nodetool repair的优势是什么?

在节点确实关闭的现实情况下,运行nodetool repair允许已关闭的节点重新同步切换提示已到期的位置。

在什么情况下数据可以复活?是仅在节点停机时间长于gc_grace_period的地方?或者这真的是网络延迟可能很大的问题吗?

另外,如何有效地安排每个节点上的作业,使它们不重叠?它必须在群集大小发生变化时进行动态调度,也可能不知道它需要多长时间。

谢谢。

1 个答案:

答案 0 :(得分:2)

假设没有失败,运行维修是可选的。

话虽如此,Cassandra的设计假设会发生某种失败;当在商用硬件上运行时,某些东西总会破碎。

在调度修复以避免“重叠”方面,我假设您的意思是在查询正在修复的范围时尝试最小化性能下降:

  • 使用顺序修复(依次修复每个副本)而不是并行(所有节点的Merkle树同时构建)。然而,在顺序中存在权衡,每次都会生成快照,并且不会很快完成整个过程。
  • 使用增量修复(尽管这会对您的压缩策略产生影响)
  • 您还可以控制是否应在特定DC或群集范围内运行修复