nodetool修复需要很长时间才能完成

T. *_*ink 2 cassandra cassandra-3.0

我目前在 18 节点配置中运行Cassandra 3.0.9。我们加载了相当多的数据,现在正在对每个节点进行修复。我的 nodetool 命令脚本如下:

nodetool repair -j 4 -local -full
Run Code Online (Sandbox Code Playgroud)

使用 nodetool tpstats 我看到了 4 个需要修复的线程,但它们的修复速度非常慢。我有 1000 次维修,按照这个速度需要数周时间。系统日志有修复项目,但也列出了“重新分发索引摘要”。这是导致我行动缓慢的原因吗?有没有更快的方法来做到这一点?

Chr*_*itz 5

修复可能需要很长时间,有时是几天,有时是几周。您可以通过以下方式改进:

  1. 运行主分区范围修复 ( -pr ) 这将仅修复每个节点的主分区范围,总体而言,速度会更快(您仍然需要在每个节点上运行修复,一次一个)。
  2. 使用-j不一定是大赢家。当然,您将一次修复多个表,但会给集群带来更多负载,这可能会损坏延迟。
  3. 您可能希望优先修复对您的应用程序最关键的键空间/表。
  4. 确保您的节点密度保持合理。每个节点 1 到 2TB。
  5. 重点修复宕机超过 3 小时的节点(假设 max_hint_window_in_ms 设置为默认值)
  6. 重点修复您为其创建墓碑的表(DELETE 语句)